java实现QQ邮箱读取

下载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 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )