通过下面两句代码即可获得该邮箱下所有文件夹名称
Folder defaultFolder = store.getDefaultFolder();
Folder[] allFolder = defaultFolder.list();
然后通过下面代码获取对应的文件
IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
IMAPFolder sendFolder = (IMAPFolder) store.getFolder("已发送"); // 发件箱
IMAPFolder folder = (IMAPFolder) store.getFolder("草稿"); // 草稿箱
IMAPFolder sendFolder = (IMAPFolder) store.getFolder("垃圾邮件"); // 垃圾邮件箱
IMAPFolder sendFolder = (IMAPFolder) store.getFolder("已删除邮件"); // 已删除邮件
具体代码如下
传入邮箱账号和密码即可
具体业务怎么要求,再怎么实现即可
//imap
public static void showPostMasterEmail(String user,String password) throws Exception{
Properties prop = System.getProperties();
prop.put("mail.store.protocol", "imap");
prop.put("mail.imap.host", "imap.mxhichina.com");
Session session = Session.getInstance(prop);
int total = 0;
IMAPStore store = (IMAPStore) session.getStore("imap"); // 使用imap会话机制,连接服务器
store.connect(user, password);
IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱
Folder defaultFolder = store.getDefaultFolder();
Folder[] allFolder = defaultFolder.list();
IMAPFolder sendFolder = (IMAPFolder) store.getFolder("已发送"); // 发件箱
sendFolder.open(Folder.READ_WRITE);
Message[] messages1 = sendFolder.getMessages();
for(Message message : messages1){
log.info("主题:" + message.getSubject());
}
folder.open(Folder.READ_WRITE);
// 获取总邮件数
total = folder.getMessageCount();
log.info("-----------------共有邮件:" + total
+ " 封--------------");
// 得到收件箱文件夹信息,获取邮件列表
log.info("未读邮件数:" + folder.getUnreadMessageCount());
Message[] messages = folder.getMessages(folder.getMessageCount()-folder.getUnreadMessageCount()+1,folder.getMessageCount());
int messageNumber = 0;
for (Message message : messages) {
log.info("发送时间:" + message.getSentDate());
log.info("主题:" + message.getSubject());
log.info("内容:" + message.getContent());
Flags flags = message.getFlags();
String subject = message.getSubject();
if(subject!= null && subject.indexOf("postmaster@net.cn")>-1){
JOptionPane.showMessageDialog(new JFrame().getContentPane(),
"有一封退信", "来自" + user + ",请登录邮箱查看!!!", JOptionPane.INFORMATION_MESSAGE);
}else if (flags.contains(Flags.Flag.SEEN)){
log.info("这是一封已读邮件");
}else {
message.setFlag(Flags.Flag.SEEN, true);
log.info("未读邮件");
}
log.info("========================================================");
log.info("========================================================");
//每封邮件都有一个MessageNumber,可以通过邮件的MessageNumber在收件箱里面取得该邮件
messageNumber = message.getMessageNumber();
}
Message message = folder.getMessage(messageNumber);
log.info(message.getContent()+message.getContentType());
// 释放资源
if (folder != null)
folder.close(true);
if (store != null)
store.close();
}