All About JAVA javamail的pop3以及IMAP方式读取未读邮件等操作

/** * 可以在props下设置认证信息,协议和端口信息,超时等信息,这样在store.connect的时候可以根 * 据props里是否设置了认证信息来选择不带参数的connect()或者如下有参数的connect(…)方法 * store.connect(user, password); store.connect(host, user, password); */ Properties props = System.getProperties(); props.setProperty(“mail.imap.host”, “mail.**.**.cn”); props.setProperty(“mail.imap.port”, “143”); 具体端口信息由邮件提供商确定 props.setProperty(“mail.imap.connectiontimeout”, “5000”); props.setProperty(“mail.imap.timeout”, “5000”);

代码正文:

Properties props = System.getProperties();Store store = null;// 用来存放邮件中文件夹的,可以简单的使用javax.mail.Folder类型,// 如果只是取未读邮件数的话Folder类型就够了IMAPFolder inbox = null; try {Session session = Session.getDefaultInstance(props, null);//如果使用pop3协议这里imap改成pop3,如果使用ssl连接这里应使用imapsstore = session.getStore(“imap”);store.connect(“mail.**.**.cn”, “user”,”pwd”);System.out.println(store);inbox = (IMAPFolder)store.getFolder(“Inbox”); //取得收件箱对象//如果需要在取得邮件数后将邮件置为已读则这里需要使用READ_WRITE,否则READ_ONLY就可以inbox.open(Folder.READ_WRITE);FlagTerm ft =new FlagTerm(new Flags(Flags.Flag.SEEN), false); //false代表未读,,true代表已读/*** Flag 类型列举如下* Flags.Flag.ANSWERED 邮件回复标记,标识邮件是否已回复。* Flags.Flag.DELETED 邮件删除标记,标识邮件是否需要删除。* Flags.Flag.DRAFT 草稿邮件标记,标识邮件是否为草稿。* Flags.Flag.FLAGGED 表示邮件是否为回收站中的邮件。* Flags.Flag.RECENT 新邮件标记,表示邮件是否为新邮件。* Flags.Flag.SEEN 邮件阅读标记,标识邮件是否已被阅读。* Flags.Flag.USER 底层系统是否支持用户自定义标记,只读。*/Message messages[] = inbox.search(ft); (Message message : messages) {//默认返回Message类型对象,因为我需要获取MessageID所以需要做强制//转换为IMAPMessage类型IMAPMessage imes = (IMAPMessage)message;(!(message.getContent() instanceof String))continue;Map<String, String> map = new HashMap<String, String>();map.put(“content”, (String)message.getContent());map.put(“title”, message.getSubject());map.put(“messageId”, imes.getMessageID());mailInfoList.add(map); //保存我要获取的信息map列表mesList.add(message); //保存我将要设置为已读的message列表}//将刚才我获取的邮件设置为已读if (mesList.size() > 0) {Message[] savedMailMessage = new Message[mesList.size()];mesList.toArray(savedMailMessage);inbox.setFlags(savedMailMessage, new Flags(Flags.Flag.SEEN),true);}} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (inbox != null) {inbox.close(false);inbox = null;}if (store != null) {store.close();store = null;}} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

只有经历过地狱般的折磨,才有征服天堂的力量。

All About JAVA javamail的pop3以及IMAP方式读取未读邮件等操作

相关文章:

你感兴趣的文章:

标签云: