zoukankan      html  css  js  c++  java
  • java mail 接受QQ邮箱未读的邮件

    案例代码如下

    //创建属性对象
            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("2960036795@qq.com", "lylglvicofzodghf");
            
            //创建目录对象
            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:\yujun\linshi\"+fileName);
                            byte[] b = new byte[1024];
                            int len = 0;
                            while((len=is.read(b)) != -1) {
                                os.write(b, 0, len);
                            }
                            is.close();
                            os.close();
                        }
                    }
                }
            }

     相关学习资料:https://www.cnblogs.com/ysocean/p/7666061.html

  • 相关阅读:
    Apache Dubbo已不再局限于Java语言
    生产Server遭挖矿程序入侵,暴力占用CPU
    【转载】【原创】贵在,难在,成在
    【转载】【原创】生命中,要有自己的一方晴天
    (转)网上看的一篇文章,感觉会给程序员一些启发
    (转)在JSP客户端限制表单重复提交
    (转)用javascript做删除时的提示信息
    (转)上传自动显示图片 代码
    控制文字长度,多出的文字用省略号代替
    PS快捷键 未完
  • 原文地址:https://www.cnblogs.com/chyxOne/p/9680423.html
Copyright © 2011-2022 走看看