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

使用javamail对邮件office 365的IMAP访问

令狐新翰
2023-03-14

我试图使用JavaMail1.4 API阅读电子邮件帐户Office365文件夹中的电子邮件。

    public static void main(String argv[]) throws Exception {
    // Get a Properties object
    Properties props = System.getProperties();

    // Get a Session object
    Session session = Session.getInstance(props, null);

    // Get a Store object
    Store store = null;
    Folder rf = null;

    if (CUR_MAIL_PROTOCOL != null)
        store = session.getStore("imap");

    // Connect
    if (CUR_MAIL_HOST != null || CUR_MAIL_LOGIN != null || CUR_MAIL_PWD != null)
        store.connect("outlook.office365.com", 993, "**MYEMAIL**", "**MYPASS**");
    else
        store.connect();

    // List namespace
    rf = store.getDefaultFolder();

    getFolderDetails(rf, true, "");
    if ((rf.getType() & Folder.HOLDS_FOLDERS) != 0) {
        Folder[] f = rf.list("%");
        for (int i = 0; i < f.length; i++)
            getFolderDetails(f[i], recursive, "    ");
    }

    store.close();
}
    Exception in thread "main" javax.mail.MessagingException: Connection timed out: connect;
  nested exception is: 
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:298)
    at javax.mail.Service.connect(Service.java:234)

共有1个答案

马德厚
2023-03-14

在我的情况下,缺少的是:

 props.setProperty("mail.imaps.sasl.mechanisms","XOAUTH2")

所有为我工作的道具(gmail和o365):

"mail.imaps.ssl.enable"         true
"mail.imaps.sasl.enable"        true
"mail.imaps.auth.login.disable" true
"mail.imaps.auth.plain.disable" true
"mail.imaps.auth.mechanisms"    "XOAUTH2"
"mail.imaps.usesocketchannels"  true
"mail.event.scope"              "session"
"mail.imaps.starttls.enable"    true
"mail.imaps.sasl.mechanisms"    "XOAUTH2"
 类似资料:
  • 问题内容: 我正在尝试在JavaMail API的帮助下通过IMAP访问来自Gmail帐户的电子邮件。我想知道为什么代码对一个电子邮件帐户有效,而对另一个电子邮件帐户无效。 我可以访问两个电子邮件帐户的文件夹。但是对于其中一个电子邮件帐户,无法访问其他文件夹,例如,它将引发异常。有人可以解释出什么问题了吗? 先感谢您。 这是代码: 问题答案: 是否有一个帐户使用非英语用户界面? Gmail文件夹名

  • 问题内容: 我需要从Gmail检索未读邮件。我正在使用Java Mail API。默认情况下,此API从最早的邮件检索到最新的邮件。但是我需要先检索最近的邮件。可能吗?提前致谢。 问题答案: 这是例子。不要忘记在类路径中添加javax.mail。

  • 问题内容: 我正在尝试阅读我的消息,我可以获取它来打印标题,但发件人和内容显示得很滑稽。这是我用来显示消息的代码: 输出如下: 为什么不打印出from语句的实际电子邮件地址?为什么不打印出实际的身体内容?(我只是在纯文本中很有趣。) 整个代码: 谢谢! 问题答案: 对于纯文本和html消息: 对于分段消息:

  • 我下载了Office 365 Connect ASP。NET MVC示例代码http://dev.office.com/code-samples-detail/5985,将其注册为Azure Active Directory中的应用程序(我具有全局管理员权限),并授予其所需的权限-“登录并读取用户配置文件”和“以用户身份发送邮件”(无其他权限),以及配置了web。配置为“ClientID”和“Cl

  • 现在,我想检查是否传入的电子邮件是重复的通过IMAP使用javamail,这可能意味着一个电子邮件等于其他邮件,他们有相同的主题,从,到,抄送,密件抄送,正文,附件。 谁能告诉我怎么做。任何想法都非常感谢。谢谢

  • 问题内容: 我正在尝试编写一个Java应用程序,该应用程序将访问其他 共享 邮箱以阅读电子邮件并执行其他活动。我阅读自己的INBOX(或其文件夹和内容)没有问题,但是很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。 问题答案: 在其他答案的帮助下,我找到了以下解决方案,该解决方案适用于com.sun.mail:javax.mail:1.6.2 使用javax.mail:mail:1.4.7