javamail接收邮件代码示例

        //imap可以把邮件设置为已读,pop3不可以
        // 准备连接服务器的会话信息
        Properties props = new Properties();
        
        props.setProperty("mail.store.protocol", "imap");
        
        props.setProperty("mail.imap.host", "host");
        
        props.setProperty("mail.imap.port", "888");
        
        // 创建Session实例对象
        Session session = Session.getInstance(props);
        
        //888为端口号
        URLName urln = new URLName("imap", "host", 888, null, "用户名", "密码");
        
        // 创建IMAP协议的Store对象
        Store store = session.getStore(urln);
        
        store.connect();
        
        //获取有哪些文件夹
        Folder folder1 = store.getDefaultFolder();
        for (Folder e : folder1.list())
        {
            System.out.println("folderName:" + e.getName());
        }
        
        // 获得收件箱
        IMAPFolder folder = (IMAPFolder)store.getFolder("INBOX");
        
        // 以读写模式打开收件箱
        folder.open(Folder.READ_WRITE);
        
        System.out.println("总数=" + folder.getMessageCount());
        
        // 获得最后一封邮件
        /**
         * 根据未读标识获取新邮件不一定准确.多线程时可能出现重复读等问题.这里根据UID进行读取.UID唯一且递增
         */
        Message lastMessage = ((IMAPFolder)folder).getMessage(folder.getMessageCount());
        long lastUID = folder.getUID(lastMessage);
        //假定上次读取到的UID为888,本次从888开始读取
        long recentUID = 888;
        Message[] messageArray = folder.getMessagesByUID(recentUID, lastUID);
        
        for (Message message : messageArray)
        {
            long uid = folder.getUID(message);
            //Apache Commons Email包解析邮件详细信息
            MimeMessageParser parser = new MimeMessageParser((MimeMessage)message);
            
            //parse函数主要解析了邮件内容,对主题等没有影响,此处不向外继续抛出异常
            try
            {
                parser.parse();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            
            //使用parser获取邮件详细信息.  例如parser.getFrom()获取发送方
            //设置邮件已读

            message.setFlag(Flags.Flag.SEEN, true);

        }

        

猜你喜欢

转载自blog.csdn.net/qq_33315102/article/details/80255722