JavaMail 查询邮件列表
为了使用JavaMail API 检查或提取电子邮件列表,需要使用 POP 或 IMAP 服务器。要检查并获取邮件,需要文件夹和存储类,主要的步骤如下:
- 获得一个 Session
- 创建POP3 Store对象并连接pop服务器,
- 创建文件夹对象,在邮箱中打开相应的文件夹;
- 得到消息;
- 关闭存储和文件夹对象,
使用 163 邮件的POP3服务;
import javax.mail.*;
import java.io.IOException;
import java.util.Properties;
public class CheckEmail {
public static void main(String args[]){
//邮件服务器参数
String user = "helloworld_assad@163.com"; //邮箱验证用户名,一般第三方的POP,smtp服务,用户名为发送邮箱地址
String password = "*************"; //邮箱验证授权码
String host = "pop.163.com"; //发送邮箱服务器
//第三方POP服务器可以不用设置port参数
//设置邮件服务器参数、服务器端口等参数
Properties props = new Properties();
props.put("mail.pop3.host",host);
props.put("mail.pop3.auth", "true");
props.put("mail.transport.protocol", "pop3");
//设置Session对象,同时配置验证方法
Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user,password);
}
});
try {
//创建本地储存对象,并进行配置
Store store = session.getStore("pop3s");
store.connect(host,user,password);
//创建文件夹对象,用于读取本地邮件列表
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
//从文件夹对象中获取每封邮件的Message对象
Message[] messages = folder.getMessages();
System.out.println("The count of the Email is :"+messages.length);
//输出所有邮件的信息
int count = 1;
for(Message message : messages){
System.out.println("---------------------------------------");
System.out.println("Email No."+ count++);
System.out.println("Subject: "+ message.getSubject());
System.out.println("From: "+ message.getFrom()[0]);
System.out.println("Text: "+ message.getContent().toString());
}
//释放相关资源
folder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
如果在读取含有HTML邮件,要想同时将图像保存在本地时,可写一个输出流,读取 MIME 类型邮件的图像部分,将其保存在本地;