javaMail收邮件主要有两种协议,一种是pop3,一种是imap。这两种协议都可以用来收邮件,但是在其中的处理上是有区别的。pop3是不支持判断邮件是否为已读的,也就是说你不能直接从收件箱里面取到未读邮件,这需要自己进行判断,然而imap就提供了这样的功能,使用imap时可以很轻松的判断该邮件是否为已读或未读或其他。
此外收件箱中的每一封邮件都对应着一个MessageNumber,所以可以通过一个MessageNumber拿到对应的那封邮件。如:Message message = folder.getMessage(messageNumber);这样定时任务每次读邮箱邮件不用全量读了。
一、imap协议模式下读取
public static void readMail() {
String protocol = "imap";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", protocol); // 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", host); // 发件人的邮箱的 SMTP服务器地址
// 获取连接
Session session = Session.getInstance(props);
session.setDebug(false);
// 获取Store对象
Store store = session.getStore(protocol);
store.connect(host, userName, password);
<