• 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

  • 相关阅读:
    项目总结1--技术
    基于MFC的Opengl实现动画
    vs2010 MFC Opengl实现
    设计模式-状态模式
    设计模式-访问者模式
    设计模式-责任链模式
    设计模式-中介者模式
    设计模式-命令模式
    设计模式-备忘录模式
    设计模式-观察者模式
  • 原文地址:https://www.cnblogs.com/chyxOne/p/9680423.html
Copyright © 2020-2023  润新知