2015-08-28 202 views
0

我正嘗試使用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)

+0

它不喜歡您的憑據。仔細檢查您的用戶名和密碼。確保他們在標準的IMAP客戶端中工作。 – Max

+0

** @ Max **憑證是正確的,我在瀏覽器上驗證了我的憑據,並且完美地工作。 – user2618875

回答

0

嗨我也通過IMAP連接到iCloud,但不是與Java郵件。我正在使用來自K9郵件客戶端的一段代碼,可在github上找到。我發現訪問IMAP不起作用,當您有2個因素授權爲您的icloud帳戶開啓。第二種情況是,當我收到與您類似的消息(身份驗證失敗)時,我使用的電子郵件地址與@ icloud.com不同。例如,我使用我的Gmail帳戶設置了我的蘋果ID,並創建了@ icloud.com別名。我無法使用Gmail地址作爲用戶名訪問IMAP,但使用@ icloud.com別名時沒有問題。

0

如果您啓用了2因子認證,則需要創建應用程序專用密碼。使用應用程序專用密碼而不是標準Apple ID密碼。另外,如果你的Apple ID以@ me.com結尾(比如說foo @ me。那麼IMAP用戶名應該只是電子郵件地址的用戶名部分(對於電子郵件=> [email protected],IMAP username => foo)

相關問題