1

我有一个 javamail 程序来定期阅读我的 pop3 帐户的电子邮件。它在大多数情况下都能连接并成功运行。但是,过了一会儿,我开始javax.mail.AuthenticationFailedException接听电话,并且无法在以后的电话中连接它。当我关闭并启动我的程序时,它会使用相同的凭据再次成功连接。为了进一步分析,我启用了会话调试日志。以下是命令跟踪输出:

@2021-05-17 12:36:08.150 !DEBUG      +OK The Microsoft Exchange POP3 service is ready. #27820545
@2021-05-17 12:36:08.150 !DEBUG      CAPA     #27820545
@2021-05-17 12:36:08.150 !DEBUG      +OK       #27820545
@2021-05-17 12:36:08.150 !DEBUG      TOP        #27820545
@2021-05-17 12:36:08.150 !DEBUG      UIDL      #27820545
@2021-05-17 12:36:08.150 !DEBUG      SASL PLAIN         #27820545
@2021-05-17 12:36:08.150 !DEBUG      USER     #27820545
@2021-05-17 12:36:08.150 !DEBUG      STLS       #27820545
@2021-05-17 12:36:08.150 !DEBUG      .               #27820545
@2021-05-17 12:36:08.150 !DEBUG      DEBUG POP3: authentication command trace suppressed          #27820545
@2021-05-17 12:36:50.341 !DEBUG      DEBUG POP3: authentication command failed #27862736
@2021-05-17 12:36:50.342 !DEBUG      QUIT      #27862737
@2021-05-17 12:36:50.342 !DEBUG      -ERR Protocol error. 19   #27862737
@2021-05-17 12:37:50.371 !DEBUG      DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]          #27922766
@2021-05-17 12:37:50.371 !DEBUG     DEBUG POP3: mail.pop3.rsetbeforequit: false #27922766
@2021-05-17 12:37:50.371 !DEBUG     DEBUG POP3: mail.pop3.disabletop: false          #27922766 

这可能是什么原因?帐户服务提供商是 Microsoft Exchange。协议错误.19 表示什么?

4

2 回答 2

0

它会在突然停止工作之前工作一段时间,并且在您刚刚重新启动程序后再次工作,这可以假设您的代码没有任何问题。

您是连接到本地 Exchange 服务器还是 Office365?

后者为各种服务活动强加了几个限制值,如果是电子邮件,当达到其中一个限制时,您会遇到身份验证失败。

您也可以在本地 Exchange 上配置相同或类似的限制,当您点击它们时会得到相同的错误行为。

在您的情况下,我假设您在给定时间段内达到了登录尝试次数的限制。检查如果您不那么频繁地 ping 邮箱会发生什么。

于 2021-05-26T06:43:10.597 回答
0

我怀疑为 POP 服务器提供的身份验证凭据已过期,或者您对所有连接都使用相同的 Session 并且它会在一段时间后过期。但就像@JRichardsz 所说,请附上您的代码片段和异常堆栈。

于 2021-05-24T20:28:00.870 回答