import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
import javax.mail.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
//获取邮件信息
public class tes {
public static void main(String[] args) {
// 邮件配置信息
//POP3服务器: pop.163.com
//SMTP服务器: smtp.163.com
//IMAP服务器: imap.163.com
String user = "邮箱账号";//邮箱账号
String password = "imap授权码";//imap授权码
String messageId = "要查询的邮件的 Message-ID"; // 要查询的邮件的 Message-ID
// 创建会话
Properties prop = System.getProperties();
prop.put("mail.store.protocol", "imap");
prop.put("mail.imap.host", "imap.163.com");
prop.put("mail.smtp.auth", "true");
//这部分就是解决异常的关键所在,设置IAMP ID信息
HashMap IAM = new HashMap();
//带上IMAP ID信息,由key和value组成,例如name,version,vendor,support-email等。
// 这个value的值随便写就行
IAM.put("name", "myname");
IAM.put("version", "1.0.0");
IAM.put("vendor", "myclient");
IAM.put("support-email", "testmail@test.com");
Session session = Session.getInstance(prop);
try {
// 使用imap会话机制,连接服务器
int total = 0;
IMAPStore store = (IMAPStore) session.getStore("imap");
store.connect(user, password);
store.id(IAM);
//邮箱文件名称遍历
// Folder[] folders = store.getDefaultFolder().list("*");
// for (Folder folder : folders) {
// System.out.println(folder.getName());
// }
// IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
IMAPFolder folder = (IMAPFolder) store.getFolder("已发送"); // 发件箱
folder.open(Folder.READ_ONLY);
// 获取总邮件数
total = folder.getMessageCount();
System.out.println("-----------------共有邮件:" + total + " 封--------------");
// 得到发件箱文件夹信息,获取邮件列表
Message[] messages = folder.getMessages();
for (Message message : messages) {
String[] header = message.getHeader("Message-ID");
if (messageId.equals(header[0])){
System.out.println("找到啦!!!!!!!!!!!!!!");
}
System.out.println("Message-ID" + header[0]);
System.out.println("发送时间:" + message.getSentDate());
System.out.println("主题:" + message.getSubject());
System.out.println("内容:" + message.getContent());
System.out.println("--------------------------------------------");
}
// 释放资源
if (folder != null) {
folder.close(true);
}
if (store != null) {
store.close();
}
} catch (MessagingException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
根据javax.mail的文档和规范,它并没有提供直接获取邮件投递状态的功能。