使用 javamail 的 IMAP 访问邮件 Office 365

2023-11-25

我正在尝试使用 JavaMail 1.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)

Thanks

PS:使用JavaMail 1.4 api的帐户Office365


PFB 代码由此解决。

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;

public class OutLookReader_imaps {

    Folder inbox;

    // Constructor of the calss.

    public OutLookReader_imaps() {
        System.out.println("Inside MailReader()...");
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        Properties props = System.getProperties();
        // Set manual Properties
        props.setProperty("mail.imaps.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.imaps.socketFactory.fallback", "false");
        props.setProperty("mail.imaps.port", "993");
        props.setProperty("mail.imaps.socketFactory.port", "993");
        props.put("mail.imaps.host", "outlook.office365.com");


        try {
            /* Create the session and get the store for read the mail. */

            Session session = Session.getDefaultInstance(System.getProperties(), null);
            Store store = session.getStore("imaps");

            store.connect("outlook.office365.com", 993, "My email ID", "my password");

            /* Mention the folder name which you want to read. */


            inbox = store.getFolder("INBOX");

            /* Open the inbox using store. */

            //inbox.open(Folder.READ_ONLY);
            inbox.open(Folder.READ_WRITE);

            Message messages[] = inbox.search(new FlagTerm(new Flags(
                    Flags.Flag.ANSWERED), false));
            //Message[] msgs = inbox.getMessages();

            System.out.println("No. of Unread Messages : " + inbox.getUnreadMessageCount());
            System.out.println("No. of Messages : " + inbox.getMessageCount());
            System.out.println("No. of Deleted Messages : " + inbox.getMode());

            FetchProfile fp = new FetchProfile();
            fp.add(FetchProfile.Item.ENVELOPE);

            inbox.fetch(messages, fp);

            try {

                printAllMessages(messages);

                inbox.close(true);
                store.close();

            } catch (Exception ex) {
                System.out.println("Exception arise at the time of read mail");
                ex.printStackTrace();
            }

        } catch (MessagingException e) {
            System.out.println("Exception while connecting to server: " + e.getLocalizedMessage());
            e.printStackTrace();
            System.exit(2);
        }

    }

    public void printAllMessages(Message[] msgs) throws Exception {
        for (int i = 0; i < msgs.length; i++) {
            System.out.println("MESSAGE #" + (i + 1) + ":");
            printEnvelope(msgs[i]);
        }
    }

    public void printEnvelope(Message message) throws Exception {

        Address[] a;

        if ((a = message.getFrom()) != null) {
            for (int j = 0; j < a.length; j++) {
                System.out.println("Email From : " + a[j].toString());
            }
        }

        String subject = message.getSubject();

        Date receivedDate = message.getReceivedDate();
        Date sentDate = message.getSentDate(); 

        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");

        System.out.println("Email Subject : " + subject);

        if (receivedDate != null) {
            System.out.println("Received Date: " + df.format(receivedDate));
        }

        System.out.println("Sent Date : " + df.format(sentDate));
    }


    public static void main(String args[]) {
        new OutLookReader_imaps();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javamail 的 IMAP 访问邮件 Office 365 的相关文章

  • 将所有 BigDecimal 运算设置为特定精度?

    我的Java程序以高精度计算为中心 需要精确到至少120位小数 因此 程序中所有非整数都将由 BigDecimal 表示 显然 我需要指定 BigDecimal 的舍入精度 以避免无限小数表达式等 目前 我发现必须在 BigDecimal
  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 我该如何解决? KnapSack - 值完全相同,但每个对象都有三个权重

    我在解决我的练习时遇到问题 我读到了动态规划和算法 我认为我的练习是 特定背包问题 我用暴力法解决了它 但我无法用动态规划解决它 我有一艘重300吨的船 背包 有些晶体本身含有 3 种物质 X Y Z 每种物质都有重量 并且所有晶体都具有相
  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • 运行单个 Java 线程的双核 CPU 利用率[重复]

    这个问题在这里已经有答案了 可能的重复 多线程 Java 应用程序能否很好地利用多核机器 https stackoverflow com questions 1649402 would a multithreaded java applic
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • java:如何设置全局线程ID?

    是否有可能为线程设置唯一ID 在分布式系统中 线程是在许多不同的机器上创建的 例如通过 RMI 我需要它来创建日志消息 根据我的研究 我知道可以使用 log4j mdc ndc 来完成 但只能在单线程中完成 我的问题是 在创建线程时必须设置
  • Elasticsearch NodeBuilder 与 TransportClient

    对于其他 Elasticsearch 开发人员来说 这可能是一个非常简单 而且愚蠢 的问题 这两者之间有什么区别 我正在从 Java Web 应用程序连接到远程 Elasticsearch 服务器 到目前为止我一直在使用 Transport
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • Visual Studio Code - Java 类路径不完整。只会报告语法错误

    在使用 python 获得了丰富的经验之后 我正在使用 java 迈出第一步 我正在运行的脚本是一个简单的 Java Swing Gui 它可以从命令行和 VS Code 中正常编译和运行 为了设置 java 调试环境 我使用 github
  • 如何从 java.sql.Blob 类型的 zip 文件中读取和提取 zip 条目,而无需将 FileInputStream 或文件路径作为字符串 java

    public static void unzipFiles java sql Blob zip throws Exception String paths byte blobAsBytes zip getBytes 1 int zip le
  • 找出该月第一个星期日/星期一等的日期

    我想在java中检测每个月第一周 第二周的第一个星期日 星期一的日期 我怎样才能实现它 我已经检查了 java 中的 Calendar 类和 Date 类 但无法找到解决方案 所以请帮助我解决这个问题 Calendar calendar C
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • 在java中打印阿拉伯字符串

    我试图在 java 中显示阿拉伯语文本 但它显示垃圾字符 示例 或有时在我打印时仅显示问号 我如何才能打印阿拉伯语 我听说它与unicode和UTF 8有关 这是我第一次使用语言 所以不知道 我正在使用 Eclipse Indigo IDE

随机推荐

  • 使用整数映射 Pandas Dataframe 中的字符串值

    在熊猫中DataFrame如何将一列中的字符串与整数映射 我有大约 500 根弦DataFrame并需要将它们替换为以 1 开头的整数 Sample DataFrame Request count 547 GET online WebRes
  • 适用于 MP3、AAC、WAV 的跨平台 (C/C++) 音频库

    我正在尝试找到一个跨平台音频库 该库将具有以下功能 按重要性排序 完整的 Windows Mac Linux 支持 C C API 免费 便宜但具有商业可行性 MP3 支持 AAC 支持 WMA 支持 FLAC 支持 奥格支持 ARM Li
  • SOLR 搜索提供商的 Sitecore 8.1 索引重建策略

    只是通读了下面的索引更新策略文档 但无法得到关于哪种策略最适合 SOLR 搜索实现的明确答案 https doc sitecore net sitecore experience platform search and indexing i
  • f# 中多路树的折叠/递归

    我正在尝试将布莱恩的折叠改编为二叉树 http lorgonblog wordpress com 2008 04 06 catamorphisms part two 申请多路树 布莱恩博客的总结 数据结构 type Tree lt a gt
  • 如何使用python获取隐藏输入的值?

    如何从html页面获取输入值 like
  • 通过主屏幕替换技术了解 Android 上的自定义锁定实现

    我一直在研究这个问题很多 我问相关的本周的问题 该领域最有帮助和最相关的链接是this and this 我想了解它是如何工作的 如果作为主屏幕替换应用程序实现的话 快速提问 如果实施 应将哪个屏幕设置为默认屏幕 我们的主屏幕替换还是原始主
  • 多维数组求和 C#

    如何从多维数组中筛选出一些值 然后计算平均选定值 因此 当我单击某个图像时 它不仅应该在鼠标指针所在的点显示深度数据 来自 Microsoft Kinect 而且还应该计算环境中的值 多维数组 这是我的代码 protected void i
  • 在组织模式下使用 babel 捕获 shell 命令的输出

    我想了解我的网络硬件 lspci grep i net 从终端 此命令给出以下输出 00 19 0 以太网控制器 Intel Corporation 82577LM 千兆位网络连接 修订版 06 02 00 0 网络控制器 Intel Co
  • 忽略整个文件夹中的特定 flake8-docstrings 错误

    有没有办法忽略指定目录中发生的错误 例如 我有D103 Missing docstring in public function错误 在每个文件里面 foo目录 我想忽略该错误 是否可以设置这样的设置setup cfg file 从 Fla
  • 如何安装ROracle包?

    我正在尝试使用安装 ROracle 包install packages ROracle 但每次我收到这条消息 Package which is only available in source form and may need compi
  • 如何检查对象是否已存在于列表中

    我有一个清单 List
  • 将变量传递给现代中继中的片段容器

    我在用着现代接力 兼容 我有一个片段 其中包含一个具有一个参数的字段 但我找不到一种从父组件传递变量值的方法 MyFragmentComponent jsx class MyFragmentComponent extends Compone
  • stl容器如何被删除?

    stl 中的向量等容器对象如何被销毁 即使它们是在堆中创建的 EDIT 如果容器保存指针那么如何销毁这些指针对象 指针的 STL 容器不会清除所指向的数据 它只会清理指针所在的空间 如果您希望向量清理指针数据 您需要使用某种智能指针实现 s
  • 辅助路由仅适用于根组件吗?

    我在子组件中设置辅助路由时遇到问题 由于某种原因 只有那些从根组件开始的辅助路由才起作用 这是我的路由器设置 export const routes RouterConfig path test1 component Test1Compon
  • 如何将数据合并到 XDP 文件并返回 PDF(通过 .NET)?

    我的团队有一个使用 Adob e LiveCycle 设计器创建的模板 XDP 情况 我们正在替换旧的 Acrobat 表单 XFDF 格式 使用此 LiveCycle 作为更大升级的一部分 当前的 Acrobat 格式是 动态填充基本数据
  • 更改 Azure 数据库端口

    是否可以更改天蓝色服务器使用的端口 我目前只看到添加可用于访问服务器的 IP 地址的功能 或者防火墙是否需要允许端口 1433 出站流量 假设您指的是 SQL 数据库服务及其关联的防火墙 则否 您只能将 IP 地址添加到防火墙以进行访问 无
  • set -- “$@” “$i” 在 Bash 中是什么意思?

    The set以下循环中的命令让我感到困惑 for i in do set i what does it mean done 我能够了解 是所有位置参数 并且 i是位置参数之一 但是 我不明白什么 set i means 它附加了值 i到位
  • 从视频url获取视频缩略图

    是否可以从视频 URL 中获取缩略图 我需要列表视图中的视频缩略图 是的 可以使用 ThumbnailUtils 获取视频的缩略图 FileOutputStream out File land new File Environment ge
  • Mapstruct LocalDateTime 到 Instant

    我是 Mapstruct 的新手 我有一个模型对象 其中包括LocalDateTime类型字段 DTO 包括Instant类型字段 我想要地图LocalDateTime将字段键入Instant类型字段 我有TimeZone传入请求的实例 像
  • 使用 javamail 的 IMAP 访问邮件 Office 365

    我正在尝试使用 JavaMail 1 4 api 读取电子邮件帐户 Office365 的文件夹中的电子邮件 我的代码是 public static void main String argv throws Exception Get a