yayajiangyayajiang 2019-10-20 16:51 采纳率: 33.3%
浏览 770
已采纳

javax.mail读取邮件有时会报错

我在用javax.mail读取163邮件的时候,有时会有很长一段时间报错,但有时是没有问题的。
代码和错误信息如下,有遇到这个问题的吗

private void getMessages() {
        try {
            String host = "pop.163.com";

            System.setProperty("https.protocols", "TLSv1");

            Properties p = new Properties();
            p.setProperty("mail.pop3.host", "pop.qq.com"); // 按需要更改
            p.setProperty("mail.pop3.port", "995");
            // SSL安全连接参数
            p.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            p.setProperty("mail.pop3.socketFactory.fallback", "true");
            p.setProperty("mail.pop3.socketFactory.port", "995");

            Session session = Session.getDefaultInstance(p, null);
            Store store = session.getStore("pop3");
            store.connect(host, username, password);

            Folder folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
            while (true) {
                Message message;
                try {
                    message = folder.getMessage(emailIndex);
                } catch (Exception e) {
                    break;
                }
                emailIndex++;

                MimeMessage mimeMessage = (MimeMessage) message;
                String sender = this.getFrom(mimeMessage);
                logger.msg("email=====" + sender + "=" + message.getSubject());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

javax.mail.AuthenticationFailedException: µÇ¼̫Ƶ·±!Çë¼ì²éÄúµÄoutlook, foxmail»òÕßÆäËü×Ô¶¯¼ì²âÓÊÏäµÄ¹¤¾ß(ÀýÈçÍøÒ×popoµÈÁÄÌ칤¾ß),½«¼ì²âµÄʱ¼ä¼ä¸ôµ÷´óһЩ£¬ÀýÈç5·ÖÖÓ¼à²âÒ»´Î.
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:207)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at com.core.service.timer.TimerTaskService.getMessages(TimerTaskService.java:72)
at com.core.service.timer.TimerTaskService.access$000(TimerTaskService.java:17)
at com.core.service.timer.TimerTaskService$BaseTimerTaskAction.execute(TimerTaskService.java:32)
at com.core.service.base.CallbackService.invokeAction(CallbackService.java:16)
at com.core.action.TimerTaskAction.invoke(TimerTaskAction.java:14)
at com.core.action.TimerTaskAction.run(TimerTaskAction.java:28)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-10-20 19:28
    关注

    明显是服务器返回了错误信息,并且这个错误信息和身份验证有关。
    javax.mail.AuthenticationFailedException:
    首先,想办法正确编码
    catch (Exception e)
    让这个中文的错误信息能正确输出,看一下说了什么(这里我要强烈谴责下api接口返回中文错误信息的开发者,极度愚蠢)
    然后如果还不能解决,检查下邮箱给你的如何提交用户名密码完成验证方面的文档,或者联系下邮箱的技术支持。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services