下载mail-1.4.7架包,把架包导入项目
public static void main(String[] args) throws MessagingException, IOException {
//创建属性对象
Properties p = new Properties();
p.put("mail.imap.auth.login.disable", "true");//身份验证
p.put("mail.imap.host", "imap.qq.com");//主机
p.put("mail.store.protocol", "imap");//协议
p.put("mail.imap.port", "993");//端口
//qq邮箱需要SSL加密
p.put("mail.smtp.socketFactory.port", "993");
p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//创建会话
Session session = Session.getInstance(p);
//存储对象
Store store = session.getStore("imap");
//连接
store.connect("imap.qq.com","1156380111@qq.com","vesqbmmaicgdibfb");
//创建目录对象
Folder folder = store.getFolder("Inbox");
//打开模式:只读
folder.open(Folder.READ_ONLY);
//获取消息,数组
Message[] ms = folder.getMessages();
//预提取对象
FetchProfile fp = new FetchProfile();
//属性
fp.add(FetchProfile.Item.ENVELOPE);
//内容
fp.add(FetchProfile.Item.CONTENT_INFO);
//标志属性
fp.add(FetchProfile.Item.FLAGS);
//x-mailer属性
fp.add("x-mailer");
//提取
folder.fetch(ms, fp);
//遍历
for(Message m : ms) {
String title = m.getSubject();//邮件的标题
int size = m.getSize();//邮件的大小
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format( m.getSentDate());//邮件的接受时间
System.out.println("标题:"+title);
System.out.println("大小:"+size);
System.out.println("接受时间:"+date);
Object obj = m.getContent();//获取邮件内容
//内容类型判断
//纯文本
if(m.isMimeType("text/plain") || m.isMimeType("text/html")) {
System.out.println("邮件内容:"+obj);
}
//多个组件内容
if(m.isMimeType("multipart/*")) {
//强制转换为多个组件类型
Multipart part = (Multipart) obj;
//遍历每个组件
for(int i=0;i<part.getCount();i++) {
//每个组件的内容
BodyPart body = part.getBodyPart(i);
//判断组件内容的类型
//纯文字
if(body.isMimeType("text/plain") || body.isMimeType("text/html") ) {
System.out.println("邮件内容:"+body.getContent());
}
//附件
if(body.isMimeType("application/octet-stream")) {
String fileName = body.getFileName();//获取附件的文件名
fileName = MimeUtility.decodeText(fileName);
//存取当前附件
//使用输入输出流
InputStream is = body.getInputStream();
OutputStream os = new FileOutputStream("F:\\lishi"+fileName);
byte[] b = new byte[1024];
int len = 0;
while((len=is.read(b)) != -1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
}
}
}
}