下载mail-1.4.7架包,把架包导入项目
1public static void main(String[] args) throws MessagingException, IOException { 2 3 //创建属性对象 4 Properties p = new Properties(); 5 p.put("mail.imap.auth.login.disable", "true");//身份验证 6 p.put("mail.imap.host", "imap.qq.com");//主机 7 p.put("mail.store.protocol", "imap");//协议 8 p.put("mail.imap.port", "993");//端口 9 10 //qq邮箱需要SSL加密 11 p.put("mail.smtp.socketFactory.port", "993"); 12 p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 13 14 //创建会话 15 Session session = Session.getInstance(p); 16 //存储对象 17 Store store = session.getStore("imap"); 18 //连接 19 store.connect("imap.qq.com","1156380111@qq.com","vesqbmmaicgdibfb"); 20 21 22 //创建目录对象 23 Folder folder = store.getFolder("Inbox"); 24 //打开模式:只读 25 folder.open(Folder.READ_ONLY); 26 27 //获取消息,数组 28 Message[] ms = folder.getMessages(); 29 30 //预提取对象 31 FetchProfile fp = new FetchProfile(); 32 //属性 33 fp.add(FetchProfile.Item.ENVELOPE); 34 //内容 35 fp.add(FetchProfile.Item.CONTENT_INFO); 36 //标志属性 37 fp.add(FetchProfile.Item.FLAGS); 38 //x-mailer属性 39 fp.add("x-mailer"); 40 41 //提取 42 folder.fetch(ms, fp); 43 44 //遍历 45 for(Message m : ms) { 46 String title = m.getSubject();//邮件的标题 47 int size = m.getSize();//邮件的大小 48 String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format( m.getSentDate());//邮件的接受时间 49 50 System.out.println("标题:"+title); 51 System.out.println("大小:"+size); 52 System.out.println("接受时间:"+date); 53 54 Object obj = m.getContent();//获取邮件内容 55 //内容类型判断 56 //纯文本 57 if(m.isMimeType("text/plain") || m.isMimeType("text/html")) { 58 System.out.println("邮件内容:"+obj); 59 } 60 //多个组件内容 61 if(m.isMimeType("multipart/*")) { 62 //强制转换为多个组件类型 63 Multipart part = (Multipart) obj; 64 //遍历每个组件 65 for(int i=0;i<part.getCount();i++) { 66 //每个组件的内容 67 BodyPart body = part.getBodyPart(i); 68 //判断组件内容的类型 69 //纯文字 70 if(body.isMimeType("text/plain") || body.isMimeType("text/html") ) { 71 System.out.println("邮件内容:"+body.getContent()); 72 } 73 //附件 74 if(body.isMimeType("application/octet-stream")) { 75 String fileName = body.getFileName();//获取附件的文件名 76 fileName = MimeUtility.decodeText(fileName); 77 78 //存取当前附件 79 //使用输入输出流 80 InputStream is = body.getInputStream(); 81 OutputStream os = new FileOutputStream("F:\\lishi"+fileName); 82 byte[] b = new byte[1024]; 83 int len = 0; 84 while((len=is.read(b)) != -1) { 85 os.write(b, 0, len); 86 } 87 is.close(); 88 os.close(); 89 } 90 } 91 } 92 } 93 }