java读取邮件时,邮件含有正文跟附件的时候,读取不到正文内容

        String pop3Server = "pop3.163.com"; // 收件服务器 
        String protocol = "pop3";
        String port = "995"; // 邮件服务端口号 995
        String username = "***@163.com"; // 邮件地址 
        String password = "******"; // 授权码OR密码 
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", protocol); // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", pop3Server); // 发件人的邮箱的 SMTP服务器地址
        props.setProperty("mail.pop3.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.pop3.socketFactory.fallback", "true");
        props.setProperty("mail.pop3.socketFactory.port", port);
        // 获取连接
        Session session = Session.getDefaultInstance(props);
        session.setDebug(false);
        // 获取Store对象
        Store store = session.getStore(protocol);
        store.connect(pop3Server, username, password); // POP3服务器的登陆认证
        // 通过POP3协议获得Store对象调用这个方法时,邮件夹名称只能指定为"INBOX"
        Folder folder = store.getFolder("INBOX");// 获得用户的邮件帐户
        folder.open(Folder.READ_WRITE); // 设置对邮件帐户的访问权限
//        Message[] messages = search(folder);
         Message[] messages = folder.getMessages();
//        MailAnalysisUtil pmm = null;
        System.out.println("邮件大小数"+messages.length);
        for (int i = 0; i < messages.length; i++) {
            System.out.println("解析第"+i+"个邮件");
            Message msg = messages[i];
            
            String subject = msg.getSubject();  
            System.out.println("主题:"+subject+"<br/>");
              
            if(msg.isMimeType("multipart/alternative")){  
                Multipart mp = (Multipart)msg.getContent();  
                int bodynum = mp.getCount();  
                for(int j=0; j<bodynum; j++){  
                    if(mp.getBodyPart(j).isMimeType("text/html")){  
                        String content = (String)mp.getBodyPart(j).getContent(); 
                        System.out.println("邮件内容:"+content);
                    }  
                }  
            }
            
            Multipart mp = (Multipart)msg.getContent();  
            for(int j=0; j<mp.getCount(); j++){  
                BodyPart bp =mp.getBodyPart(j);  
                if(bp.getDisposition()!=null){  
                    String fileName = bp.getFileName();  
                    if(fileName.startsWith("=?")){  
                        fileName = MimeUtility.decodeText(fileName); //需要解析中文名称的文件名(将中文名称加入邮件时用encodeText)  
                    }
                    System.out.println("附件:"+fileName);
                }  
            }
            
        }
        folder.close(false);// 关闭邮件夹对象
        store.close(); // 关闭连接对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值