当前位置: 首页 > 知识库问答 >
问题:

Java mail iCloud邮件连接到IMAP服务器

茅炯
2023-03-14

我正在尝试使用Java应用程序连接iCloud邮件。我想使用用户凭据从iCloud IMAP邮件服务器读取邮件。但它不起作用。下面的代码片段适用于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";
}

调试信息为:

debug:setdebug:JavaMail版本1.5.4

调试:getProvider()返回

javax.mail.provider[STORE,imaps,com.sun.mail.imap.imapsslstore,Oracle]

调试IMAPS:Mail.imap.FetchSize:16384

调试IMAPS:Mail.imap.IgnoreBodyStructureSize:false

调试IMAPS:closeFoldersOnStoreFailure

调试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]

调试IMAPS:Auth:ATOKEN

调试IMAPS:Auth:纯

DEBUG imaps:AUTHENTICATE普通命令结果:A0 NO[AUTHENTICATIONFAILED]Authentication failed javax.mail.authenticationfailedexception:[AUTHENTICATIONFAILED]Authentication failed at com.sun.mail.imap.imapstore.protocolconnect(imapstore.java:723)at javax.mail.service.connect(service.java:364)

共有1个答案

澹台聪
2023-03-14

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

 类似资料:
  • 我正在尝试连接到我的电子邮件服务器使用我的spring boot应用程序。当我从命令提示符telnet localhost25时,我看到下面的- 220 Microsoft ESMTP邮件服务准备就绪2016年5月18日星期三11:09:30-0400 但是,当我尝试从我的程序连接时,我看到下面的错误 原因:org.springframework.Mail.mailsendexception:邮件

  • IMAP是Internet Message Access Protocol缩写。 它是一种应用层Internet协议,允许电子邮件客户端访问远程邮件服务器上的电子邮件。 IMAP服务器通常侦听众所周知的端口143.基于SSL的IMAP(IMAPS)被分配给端口号993。 IMAP支持在线和离线操作模式。 使用IMAP的电子邮件客户端通常会在服务器上保留消息,直到用户明确删除它们为止。 软件包com

  • 问题内容: 当我尝试使用PHP发送电子邮件时,我一直收到此错误消息: 我的php.ini看起来像这样: 我将笔记本电脑用作服务器。.我在做什么错?谢谢。 问题答案: 您需要在本地运行邮件服务器。如果是Unix,请启用sendmail。如果是Windows,请安装IIs的“简单邮​​件传输服务器”(不确定名称是否正确)组件。

  • 我使用的是spring Boot2.2.4-Release和spring integration 5.2.3,我使用的是IntegrationFlow和DSL,因为我需要配置几个IMAP服务器。 所以我写了这段代码: 其中是 通过设置,我可以在处理程序组件中处理,但我有一些问题。 null 我不知道是否应该做什么来告诉框架关闭文件夹 谁能给我提点建议吗? 谢谢你

  • 我试图在测试环境中将Java应用程序连接到993上的IMAP服务器邮件。 我试图忽略证书验证,使用以前对类似问题的回答中的建议,如下所示: 但它似乎不起作用,我仍然有一个例外。 所以我的问题是,实际上是否有可能使用IMAPS协议连接到邮件服务器,而不必检查或验证证书? 如果是的话,选择忽略证书验证不是双方的决定吗?JavaApp和邮件服务器?

  • 我使用的是David Walsh的脚本,它通过IMAP连接到Gmail,并在屏幕上输出电子邮件数据。 我已经运行了两个测试案例: 使用 IMAP 从我自己的域读取电子邮件。 使用 IMAP 从 gmail 读取电子邮件。 读120封邮件的时间差别很大。对于Gmail,整个脚本需要大约5秒,其中1.2秒连接,3.8秒阅读邮件,0.1629秒连接,0.0238秒阅读邮件。 这些价值观与我的预期大相径庭