Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 536|回复: 0

JavaMail 邮件接收问题

  [复制链接]

该用户从未签到

发表于 2014-9-27 10:42:48 | 显示全部楼层 |阅读模式
3Java金币
javaMail 接收邮件,获取pop3协议收件箱后,遍历Message对象,无法获取主题,发送时间等信息,可获取邮件的内容,使用imap协议获取收件箱,可获得主题,发送时间,但无法获取邮件内容。测试了163,126,sohu邮箱,也测试自己搭建的SendMail邮件服务器,都存在这样的问题。

pop3协议代码与结果


   Properties props = new Properties();

        // 创建Session实例对象

        Session session = Session.getDefaultInstance(props);

        session.setDebug(false);

        Store store =  session.getStore("pop3");

        store.connect("imap.163.com","username", "passwd");



        // 获得收件箱

        Folder folder = store.getFolder("INBOX"); // 收件箱  

        folder.open(Folder.READ_ONLY); //打开收件箱

        System.out.println("未读邮件数: " + folder.getUnreadMessageCount());

        System.out.println("删除邮件数: " + folder.getDeletedMessageCount());

        System.out.println("新邮件: " + folder.getNewMessageCount());

        // 获得收件箱中的邮件总数

        System.out.println("邮件总数: " + folder.getMessageCount());

        Message[] messages = folder.getMessages();



        for (int i = 0, count = messages.length; i < count; i++) {

                System.out.println("主题:"+messages.getSubject());

                System.out.println("发件日期:"+messages.getSentDate());
                System.out.println("邮件内容:"+messages.getContent());
        }         
        //释放资源
        folder.close(false);
        store.close();

未读邮件数: 4
删除邮件数: 0
新邮件: 0
邮件总数: 4
主题:null
发件日期:null
邮件内容:------=_Part_0_330459891.1411535180732
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

5rWL6K+V6YKu5Lu25paH5pys5L2T
------=_Part_0_330459891.1411535180732--


主题:null
发件日期:null
邮件内容:111111111123232

imap 协议代码与结果

Properties props = new Properties();
        // 创建Session实例对象
        Session session = Session.getDefaultInstance(props);
        session.setDebug(false);
        Store store =  session.getStore("imap");
        store.connect("imap.163.com","username", "passwd");


        // 获得收件箱
        Folder folder = store.getFolder("INBOX"); // 收件箱  
        folder.open(Folder.READ_ONLY); //打开收件箱
        System.out.println("未读邮件数: " + folder.getUnreadMessageCount());
        System.out.println("删除邮件数: " + folder.getDeletedMessageCount());
        System.out.println("新邮件: " + folder.getNewMessageCount());
        // 获得收件箱中的邮件总数
        System.out.println("邮件总数: " + folder.getMessageCount());
        Message[] messages = folder.getMessages();


        for (int i = 0, count = messages.length; i < count; i++) {
                System.out.println("主题:"+messages.getSubject());
                System.out.println("发件日期:"+messages.getSentDate());
                System.out.println("邮件内容:"+messages.getContent());
        }         
        //释放资源
        folder.close(false);
        store.close();

未读邮件数: 1
删除邮件数: 0
新邮件: 1
邮件总数: 4
主题:测试邮件
发件日期:Wed Sep 24 13:06:20 CST 2014
获取内容抛异常
Exception in thread "main" java.lang.NullPointerException
at javax.mail.internet.ParameterList.set(ParameterList.java:165)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.parseParameters(BODYSTRUCTURE.java:404)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:224)
at com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:109)
at com.sun.mail.imap.protocol.FetchResponse.parseItem(FetchResponse.java:198)
at com.sun.mail.imap.protocol.FetchResponse.parse(FetchResponse.java:164)
at com.sun.mail.imap.protocol.FetchResponse.<init>(FetchResponse.java:92)
at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:288)
at com.sun.mail.iap.Protocol.command(Protocol.java:313)
at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1543)
at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:1535)
at com.sun.mail.imap.protocol.IMAPProtocol.fetchBodyStructure(IMAPProtocol.java:1235)
at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1294)
at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:639)
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:927)
at cn.lonsun.filedirectpassing.demo.ReceiveMailTest.receive(ReceiveMailTest.java:66)
at cn.lonsun.filedirectpassing.demo.ReceiveMailTest.main(ReceiveMailTest.java:39)


回复

使用道具 举报

  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2014-9-27 11:04:48 | 显示全部楼层
    ReceiveMailTes.java 66行出现空指针异常 把66行的代码贴出来。
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2014-9-29 08:37:46 | 显示全部楼层
    admin 发表于 2014-9-27 11:04
    ReceiveMailTes.java 66行出现空指针异常 把66行的代码贴出来。

    问题解决了~把mail.jar 换成1.4版的就行了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 04:21 , Processed in 0.387008 second(s), 45 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表