问题
如何在java程序中连接邮箱,并读取收件箱中的邮件呢?
解决
/**
* @param protocol 邮箱使用的协议
* @param port 端口
* @param host host
* @param user 用户名
* @param psw 密码
*/
public void emailDemmo(@RequestParam String protocol,
@RequestParam String port,
@RequestParam String host,
@RequestParam String user,
@RequestParam String psw) {
Properties props = new Properties();
//pop3
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.pop3.port", port);
props.setProperty("mail.pop3.host", host);
Folder folder = null;
Store store = null;
try {
// 创建Session实例对象
Session session = Session.getInstance(props);
store = session.getStore(protocol);
store.connect(user, psw);
// 获得收件箱
folder = store.getFolder("INBOX");
//打开收件箱
folder.open(Folder.READ_WRITE);
log.debug("收件箱已打开");
Message[] messages = folder.getMessages();
for (Message message : messages) {
//逐个处理邮件
}
} catch (MessagingException | UnsupportedEncodingException e) {
log.error("初始化邮箱失败!!!", e);
} finally {
try {
if (folder != null) {
folder.close(true);
}
} catch (MessagingException e) {
log.error("文件目录关闭失败!!!", e);
}
try {
if (store != null) {
store.close();
}
} catch (MessagingException e) {
log.error("邮箱连接关闭失败!!!", e);
}
}
}