【发布时间】:2015-11-22 22:43:48
【问题描述】:
我正在尝试使用 Java 应用程序连接 iCloud 邮件。我想使用用户凭据从 iCloud IMAP 邮件服务器读取邮件。但它不起作用。下面的代码 sn-p 适用于 Gmail、Yahoo、Outlook,但不适用于 iCloud:
public void connectToIMAP(final User user, MailSettings settings) {
ICloudSettings iCloud = (ICloudSettings) settings;
properties = System.getProperties();
properties.setProperty("mail.store.protocol", iCloud.imap.protocol);
properties.setProperty("mail.imap.starttls.enable", "true");
properties.setProperty("mail.imap.debug", "true");
try {
session = Session.getInstance(properties);
session.setDebug(true);
store = session.getStore();
store.connect(iCloud.imap.host, iCloud.imap.port, user.getEmail(), user.getPassword());
folder = store.getFolder(MailSettings.INBOX);
folder.open(Folder.READ_ONLY);
} catch (Exception e) {
e.printStackTrace();
}
}
public ICloudSettings() {
imap.host = "imap.mail.me.com";
imap.port = 993;
imap.protocol = "imaps";
}
调试信息是:
调试:setDebug:JavaMail 1.5.4 版
调试:getProvider() 返回
javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle]
调试 IMAP:mail.imap.fetchsize:16384
调试 IMAPS:mail.imap.ignorebodystructuresize:假
调试 IMAP:mail.imap.statuscachetimeout:1000
调试 IMAP:mail.imap.appendbuffersize:-1
调试 IMAP:mail.imap.minidletime:10
调试 IMAP:closeFoldersOnStoreFailure
DEBUG IMAPS:尝试连接主机“imap.mail.me.com”,端口 993,isSSL true * OK [CAPABILITY mr11p00im-iscream006 15E43 XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN] iSCREAM 准备隆隆声 (15E43-20056:9352) mr11p00im-iscream006 [24:210:09:33:11:22]
调试 IMAP:授权:ATOKEN
调试 IMAPS: AUTH: PLAIN
调试 IMAPS:protocolConnect 登录,host=imap.mail.me.com,user=yogesh.h.patil@icloud.com,密码=
DEBUG IMAPS:AUTHENTICATE PLAIN 命令跟踪被抑制
DEBUG IMAPS:AUTHENTICATE PLAIN 命令结果:A0 NO [AUTHENTICATIONFAILED] 身份验证失败 javax.mail.AuthenticationFailedException:[AUTHENTICATIONFAILED] 身份验证失败 在 com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:723) 在 javax.mail.Service.connect(Service.java:364)
【问题讨论】:
-
它不喜欢您的凭据。仔细检查您的用户名和密码。确保它们在标准 IMAP 客户端中工作。
-
@Max 凭据是正确的,我在浏览器上验证了我的凭据,它运行良好。
标签: jakarta-mail imap icloud