【问题标题】:Java mail iCloud mail connect to IMAP serverJava 邮件 iCloud 邮件连接到 IMAP 服务器
【发布时间】: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


【解决方案1】:

您好,我也通过 IMAP 连接到 iCloud,但不是通过 java 邮件。我正在使用来自 github 上的 K9 邮件客户端的一段代码。我发现当您为 icloud 帐户打开 2 因素授权时,访问 IMAP 不起作用。当我收到与您类似的消息(身份验证失败)时,第二种情况是当我使用与 @icloud.com 不同的电子邮件地址时。例如,我使用我的 gmail 帐户设置了我的 apple id,并创建了 @icloud.com 别名。我无法使用 gmail 地址作为用户名访问 IMAP,但是当我使用 @icloud.com 别名时没有问题。

【讨论】:

    【解决方案2】:

    如果您启用了 2 因素身份验证,则需要创建应用专用密码。使用应用专用密码而不是标准 Apple ID 密码。

    另外,如果您的 Apple ID 以 @me.com 结尾(比如 foo@me.com),那么 IMAP 用户名应该只是电子邮件地址的用户名部分(对于电子邮件 => foo@me.com,IMAP 用户名=> 富)

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 2019-09-08
      • 2018-11-11
      • 2012-08-08
      • 1970-01-01
      • 2016-03-14
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多