之前理解了发邮件,这次这不就轮到收邮件(解析邮件)了。
其实解析邮件内容一直在用,直到最近有一个需求是将邮件转移文件夹。比如收件箱转移到垃圾文件这样。才踩到了一个坑。
这个坑就是POP3协议下邮箱的文件夹目录只有INBOX(收件箱),而只有IMAP协议下才能拿到各个文件夹,从而进行邮件的转移。
public class MailBean {
private String imapHost = "";//服务器地址
private String imapPort = "";//服务器端口号 143
private String addr = "";//发件人邮箱地址
private String userName = "";//用户名
private String password = "";//用户密码
}
public static void makeError(MailBean mailBean)
{
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.host", mailBean.getImapHost());
props.setProperty("mail.imap.port", mailBean.getImapPort());
Session session = Session.getInstance(props);
Store store = session.getStore("imap");
store.connect(mailBean.getSmtpHost(), mailBean.getImapPort(), mailBean.getUserName(), mailBean.getPassword());
//显示所有文件夹
/*
Folder defaultFolder = store.getDefaultFolder();
Folder[] folders = defaultFolder.list();
for (int i = 0;i<folders.length;i++) {
System.out.println(folders[i].getName());
}
*/
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message[] msgs = folder.getMessages();
Folder dfolder = store.getFolder("垃圾文件");
dfolder.open(Folder.READ_WRITE);
if (msgs.length != 0) {
folder.copyMessages(msgs, dfolder);//复制邮件
folder.setFlags(msgs, new Flags(Flags.Flag.DELETED), true);//删除邮件
}
folder.close(true);
dfolder.close(true);
store.close();
}
嗯,之后应该看看POP3协议和IMAP协议之间更多的区别。留着下次更新。
网友评论