我正嘗試使用Java應用程序與iCloud郵件連接。我想使用用戶憑據從iCloud IMAP郵件服務器讀取郵件。但它不起作用。下面的代碼片段工作的Gmail,雅虎,展望,但不工作的iCloud:Java郵件iCloud郵件連接到IMAP服務器
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";
}
調試信息是:
DEBUG:setDebug:JavaMail的1.5.4版
DEBUG:getProvider()返回
javax.mail.Provider [STORE,IMAPS,com.sun.mail.imap.IMAPSSLStore,甲骨文]
DEBUG IMAPS:mail.imap.fetchsize:16384
DEBUG IMAPS:mail.imap.ignorebodystructuresize:假
DEBUG IMAPS:mail.imap.statuscachetimeout:1000
DEBUG IMAPS:mail.imap.appendbuffersize:-1
DEBUG IMAPS: mail.imap.minidletime:10
DEBUG IMAPS:closeFoldersOnStoreFailure
DEBUG IMAPS:試圖連接到主機 「imap.mail.me.com」,PO rt 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]
DEBUG IMAPS:AUTH:ATOKEN
DEBUG IMAPS:AUTH:PLAIN
DEBUG IMAPS:protocolConnect登錄,主機= imap.mail.me.com,用戶= yogesh.h。 [email protected],密碼=
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
** @ Max **憑證是正確的,我在瀏覽器上驗證了我的憑據,並且完美地工作。 – user2618875