我正在尝试使用 javamail 连接到本地后缀鸽子服务器。我已经使用 Thunderbird 成功连接到服务器,所以我知道我的用户名和密码是正确的,但我总是得到
Javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Authentication failed.
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:661)
at javax.mail.Service.connect(Service.java:295)
at servers.MailEngine.initMailServer(MailEngine.java:661);
我所知道的唯一一件事就是改变java。禁用一些不太安全的协议。dovecot需要什么协议?还是我看错了方向。
如果这是一个协议问题,是否有任何方法可以将参数传递给编译器?我确实有其他服务,我想阻止支持禁用的协议
编辑:
Session emailSessionObj;
Store storeObj;
Properties props = new Properties();
props.put("mail.imap.host", 127.0.0.1);
props.put("mail.imap.port", 143);
emailSessionObj = Session.getDefaultInstance(props);
storeObj = emailSessionObj.getStore("imap");
storeObj.connect("127.0.0.1", 143, "username","password");
这是我使用的代码
这是调试输出
DEBUG: setDebug: JavaMail version 1.5.0-b01
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
localhost : 143 : from@smsmail.pittsburgfoundry.com : smsmailpass:DEBUG IMAP: trying to connect to host "localhost", port 143, isSSL false
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot (Ubuntu) ready.
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: protocolConnect login, host=localhost, user=from@smsmail.pittsburgfoundry.com, password=<non-null>
DEBUG IMAP: AUTHENTICATE PLAIN command trace suppressed
DEBUG IMAP: AUTHENTICATE PLAIN command result: A0 NO [AUTHENTICATIONFAILED] Authentication failed.
最后,它最终是过时的javamail和我的地图身份验证的一些问题的结合。
另一个问题是用户名被输入为xxx@yyy.zzz,它只是想要xxx。来自dovecot和pam的调试消息太模糊而没有太大帮助,因为它没有找到用户名