带有IMAP的JavaMail获取“;A1没有登录失败”;例外

带有IMAP的JavaMail获取“;A1没有登录失败”;例外,java,email,jakarta-mail,exchange-server,imap,Java,Email,Jakarta Mail,Exchange Server,Imap,这个问题与以下问题有关: 由于使用JavaMail 1.6.0遇到同样的问题,我偶然发现了上述线程。我们正在尝试使用IMAP连接到Exchange邮箱。Thunderbird连接完美,因此我认为这是由与JavaMail相关的其他问题引起的 @比尔·香农:我已经完成了您上面强调的所有工作,除了我们正在使用STARTTLS,因为在Exchange服务器中禁用了SSL支持(Thunderbird也使用STARTTLS并正确连接) 在这件事上的任何帮助都将不胜感激 INFO | jvm 1 |

这个问题与以下问题有关:

由于使用JavaMail 1.6.0遇到同样的问题,我偶然发现了上述线程。我们正在尝试使用IMAP连接到Exchange邮箱。Thunderbird连接完美,因此我认为这是由与JavaMail相关的其他问题引起的

@比尔·香农:我已经完成了您上面强调的所有工作,除了我们正在使用STARTTLS,因为在Exchange服务器中禁用了SSL支持(Thunderbird也使用STARTTLS并正确连接)

在这件事上的任何帮助都将不胜感激

INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG: setDebug: JavaMail version 1.6.0
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.fetchsize: 16384
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.ignorebodystructuresize: false
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.statuscachetimeout: 1000
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.appendbuffersize: -1
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.minidletime: 10
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: enable STARTTLS
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: closeFoldersOnStoreFailure
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: trying to connect to host "mail.diversepower.com", port 143, isSSL false
INFO   | jvm 1    | 2017/09/07 20:59:02 | * OK The Microsoft Exchange IMAP4 service is ready.
INFO   | jvm 1    | 2017/09/07 20:59:02 | A0 CAPABILITY
INFO   | jvm 1    | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
INFO   | jvm 1    | 2017/09/07 20:59:02 | A0 OK CAPABILITY completed.
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: protocolConnect login, host=mail.abc.com, user=abc@def.com, password=<non-null>
INFO   | jvm 1    | 2017/09/07 20:59:02 | A1 STARTTLS
INFO   | jvm 1    | 2017/09/07 20:59:02 | A1 OK Begin TLS negotiation now.
INFO   | jvm 1    | 2017/09/07 20:59:02 | A2 CAPABILITY
INFO   | jvm 1    | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
INFO   | jvm 1    | 2017/09/07 20:59:02 | A2 OK CAPABILITY completed.
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: AUTH: PLAIN
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism PLAIN disabled by property: mail.imap.auth.plain.disable
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism LOGIN not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism NTLM not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism XOAUTH2 disabled by property: mail.imap.auth.xoauth2.disable
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: LOGIN command trace suppressed
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: LOGIN command result: A3 NO LOGIN failed.
INFO | jvm1 | 2017/09/07 20:59:02 |调试:setDebug:JavaMail版本1.6.0
信息| jvm 1 | 2017/09/07 20:59:02 |调试:getProvider()返回javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:mail.IMAP.fetchsize:16384
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:mail.IMAP.ignorebodystructuresize:false
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:mail.IMAP.statuscachetimeout:1000
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:mail.IMAP.appendbuffersize:-1
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:mail.IMAP.minidletime:10
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:启用STARTTLS
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:closeFoldersOnStoreFailure
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:尝试连接到主机“mail.diversepower.com”,端口143,isSSL false
信息| jvm 1 | 2017/09/07 20:59:02 |*好,Microsoft Exchange IMAP4服务已准备就绪。
信息| jvm 1 | 2017/09/07 20:59:02 | A0能力
信息| jvm 1 | 2017/09/07 20:59:02 |*功能IMAP4 IMAP4rev1可登录STARTTLS UIDPLUS子代空闲命名空间文字+
信息| jvm 1 | 2017/09/07 20:59:02 | A0正常功能完成。
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:protocolConnect登录,主机=mail.abc.com,用户=abc@def.com,密码=
信息| jvm 1 | 2017/09/07 20:59:02 | A1标准
信息| jvm 1 | 2017/09/07 20:59:02 | A1现在开始TLS谈判。
信息| jvm 1 | 2017/09/07 20:59:02 | A2能力
信息| jvm 1 | 2017/09/07 20:59:02 |*功能IMAP4 IMAP4rev1 AUTH=普通UIDPLUS子代空闲命名空间文字+
信息| jvm 1 | 2017/09/07 20:59:02 | A2正常功能完成。
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:AUTH:PLAIN
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:机制被属性禁用:mail.IMAP.auth.PLAIN.disable
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:服务器不支持机制登录
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:服务器不支持机制NTLM
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:机制XOAUTH2被属性禁用:mail.IMAP.auth.XOAUTH2.disable
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:登录命令跟踪被抑制
信息| jvm 1 | 2017/09/07 20:59:02 |调试IMAP:登录命令结果:A3没有登录失败。

这是日志的一部分,告诉您发生了什么:

INFO   | jvm 1    | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
INFO   | jvm 1    | 2017/09/07 20:59:02 | A2 OK CAPABILITY completed.
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: AUTH: PLAIN
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism PLAIN disabled by property: mail.imap.auth.plain.disable
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism LOGIN not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism NTLM not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism XOAUTH2 disabled by property: mail.imap.auth.xoauth2.disable
服务器会告诉您进行身份验证的可能方法。客户机通过自己的机制检查服务器是否支持它,或者是否有理由不使用它:

  • PLAIN
    受双方支持,但由于JavaMail会话属性
    mail.imap.auth.PLAIN.disable
    设置为
    true
  • 服务器不支持登录
  • 服务器不支持NTLM
  • 服务器不支持
    XOAUTH2
    ,并且由于JavaMail会话属性
    mail.imap.auth.XOAUTH2.disable
    设置为
    true
由于没有通用的身份验证机制,身份验证失败


这里为您提供的解决方案是删除会话属性中的设置
mail.imap.auth.plain.disable
(或将其设置为
false
)。

以下是日志的一部分,告诉您发生了什么:

INFO   | jvm 1    | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
INFO   | jvm 1    | 2017/09/07 20:59:02 | A2 OK CAPABILITY completed.
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: AUTH: PLAIN
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism PLAIN disabled by property: mail.imap.auth.plain.disable
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism LOGIN not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism NTLM not supported by server
INFO   | jvm 1    | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism XOAUTH2 disabled by property: mail.imap.auth.xoauth2.disable
服务器会告诉您进行身份验证的可能方法。客户机通过自己的机制检查服务器是否支持它,或者是否有理由不使用它:

  • PLAIN
    受双方支持,但由于JavaMail会话属性
    mail.imap.auth.PLAIN.disable
    设置为
    true
  • 服务器不支持登录
  • 服务器不支持NTLM
  • 服务器不支持
    XOAUTH2
    ,并且由于JavaMail会话属性
    mail.imap.auth.XOAUTH2.disable
    设置为
    true
由于没有通用的身份验证机制,身份验证失败


这里为您提供的解决方案是删除会话属性中的设置
mail.imap.auth.plain.disable
(或将其设置为
false
)。

@Bill Shannon:非常感谢您的帮助。非常感谢

谢谢大家的意见。最后我们设法解决了这个问题。我们必须启用PLAIN,并且用户名必须仅指定为电子邮件地址的第一部分(abc,地址为abc@def.com)。我相信本例中的Exchange服务器是Exchange Server 2013


希望这对那些偶然发现同样问题的人有所帮助

比尔·香农:非常感谢你的帮助。非常感谢

谢谢大家的意见。最后我们设法解决了这个问题。我们必须启用PLAIN,并且用户名必须仅指定为电子邮件地址的第一部分(abc表示a)