//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()获取发送方
//设置邮件已读
// 准备连接服务器的会话信息
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);
}