之前理解了發(fā)郵件苹支,這次這不就輪到收郵件(解析郵件)了砾隅。
其實(shí)解析郵件內(nèi)容一直在用,直到最近有一個(gè)需求是將郵件轉(zhuǎn)移文件夾债蜜。比如收件箱轉(zhuǎn)移到垃圾文件這樣晴埂。才踩到了一個(gè)坑。
這個(gè)坑就是POP3協(xié)議下郵箱的文件夾目錄只有INBOX(收件箱)策幼,而只有IMAP協(xié)議下才能拿到各個(gè)文件夾邑时,從而進(jìn)行郵件的轉(zhuǎn)移奴紧。
public class MailBean {
private String imapHost = "";//服務(wù)器地址
private String imapPort = "";//服務(wù)器端口號(hào) 143
private String addr = "";//發(fā)件人郵箱地址
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);//復(fù)制郵件
folder.setFlags(msgs, new Flags(Flags.Flag.DELETED), true);//刪除郵件
}
folder.close(true);
dfolder.close(true);
store.close();
}
嗯特姐,之后應(yīng)該看看POP3協(xié)議和IMAP協(xié)議之間更多的區(qū)別。留著下次更新黍氮。