javaMail(三)

2018-12-07  本文已影响0人  云鲸鱼rain

之前理解了发邮件,这次这不就轮到收邮件(解析邮件)了。
其实解析邮件内容一直在用,直到最近有一个需求是将邮件转移文件夹。比如收件箱转移到垃圾文件这样。才踩到了一个坑。
这个坑就是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协议之间更多的区别。留着下次更新。

上一篇 下一篇

猜你喜欢

热点阅读