2015-08-28 208 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)

相关问题