通过 Java 中 5 种流行的方法提取电子邮件

在开发电子邮件处理应用程序时,建立一种从收件箱中提取消息的有效机制对于可靠、及时的传递和可访问性至关重要。处理不断增长的传入消息的组织和企业尤其赞赏它。在本文中,我们将探讨如何利用 Java 库的强大功能,通过 POP3、IMAP、EWS、Graph API 以及以 pst 文件为示例从各种格式的离线邮箱存储中检索电子邮件。这些方法为电子邮件检索提供了全面的解决方案,增强了 Java 应用程序的功能。

Aspose.Email 是用于轻松的开发 email 功能的应用程序的一组控件,基于  ASP.NET 的Web应用、Web服务和Windows 应用。支持 Outlook PST, EML, MSG, and MHT 格式. 允许开发者直接与 SMTP, POP, FTP, 和 MS Exchange 服务器进行工作。支持邮件合并、行事历、定制邮件标题和内容、嵌入文件等,Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.Email 最新下载icon-default.png?t=N7T8https://www.evget.com/product/3081/download

用于提取消息的 Java API

要从 Java 中的服务器或邮箱存储中提取消息,我们将使用Aspose.Email for Java。Aspose.Email 是一个强大的库,使 Java 开发人员能够轻松地使用电子邮件、文件夹和邮件服务器。它支持多种电子邮件格式,包括 MSG、EML、PST 和 OST,使其成为电子邮件相关任务的多功能选择。如果您使用以下 Maven 配置下载或安装该 API,则可以轻松地将 API 实施到您的项目中。

存储库:

<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>

依赖关系:

<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>23.11</version>
<classifier>jdk16</classifier>
</dependency>
通过 POP3 检索电子邮件

POP3(邮局协议 3)是一种广泛使用的电子邮件检索协议。它允许您将电子邮件从邮件服务器下载到本地设备。借助 Aspose.Email,您可以使用以下代码片段和步骤轻松地通过 POP3 检索电子邮件:

  1. 使用Pop3Client类创建一个对象,传递必要的属性以建立与 POP3 服务器的连接。
  2. 通过将安全选项设置为SecurityOptions.Auto来启用适当安全协议的自动选择。
  3. 通过调用Pop3Client对象上的listMessages方法来检索邮箱中的邮件集合。
  4. 迭代 messageInfoCol 集合。
  5. 对于每个Pop3MessageInfo对象,调用Pop3Client对象上的fetchMessage方法,传递从messageInfo.getSequenceNumber()检索到的序列号。
  6. 在循环内,您可以使用 eml 变量中获取的消息,例如读取其内容或将其保存到文件中。
Pop3Client client = new Pop3Client("pop3.server.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);

try {
Pop3MessageInfoCollection messageInfoCol = pop3Client.listMessages();

for (Pop3MessageInfo messageInfo : messageInfoCol) {
MailMessage eml = client.fetchMessage(messageInfo.getSequenceNumber());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
从 MS Exchange Server 检索消息

Exchange Web 服务 (EWS) 协议是 Microsoft 开发的强大且多功能的通信协议,用于访问和管理 Microsoft Exchange Server 和 Office 365 中的数据。Aspose.Email 提供了一系列功能来处理交换邮箱和消息,使开发人员能够构建与 Microsoft Exchange Server 和 Office 365 无缝集成并管理数据的应用程序和服务,使其成为现代业务通信和协作的宝贵工具。下面是通过简单的代码片段和步骤演示了我们的 API 与 EWS 协议的有效集成:

  1. 创建IEWSClient对象,调用EWSClient类上的 getEWSClient 方法并传递 Exchange 服务器的 EWS 终结点的 URL 以及用于身份验证的用户名和密码。
  2. 在客户端对象上调用getMailboxInfo()和getInboxUri()方法以获取收件箱文件夹的 URI。
  3. 调用客户端对象上的listMessages()方法,传递收件箱的 URI,以检索表示收件箱中邮件的ExchangeMessageInfo对象的集合。
  4. 迭代 messageInfoCol 集合。
  5. 对于每个ExchangeMessageInfo对象,调用getUniqueUri()方法来获取消息的唯一 URI。
  6. 调用客户端对象上的fetchMessage方法,传递 strMessageURI,以获取特定消息。
  7. 在循环内,您可以使用 eml 变量中获取的消息,例如读取其内容或将其保存到文件中。
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "UserName", "Password");
ExchangeMessageInfoCollection messageInfoCol = client.listMessages(client.getMailboxInfo().getInboxUri());

for (ExchangeMessageInfo msgInfo : (Iterable<ExchangeMessageInfo>) messageInfoCol) {
String strMessageURI = msgInfo.getUniqueUri();

MailMessage eml = client.fetchMessage(strMessageURI);
}
Microsoft Graph 从服务器提取消息

Microsoft Graph API 是 Microsoft 提供的 REST API,用于访问各种 Microsoft 服务,包括 Outlook 和 Office 365。 Aspose.Email for Java 提供的IGraphClient类的实例处理构建请求,将其发送到 Microsoft Graph API,并处理响应。此集成提供了一组用于高效电子邮件处理的功能。下面的代码示例演示了以下步骤支持的消息检索功能:

  1. 创建 IGraphClient 对象,调用GraphClient类上的getClient方法并传递 tokenProvider 对象以使用 Microsoft Graph API 进行身份验证。
  2. 调用IGraphClient 对象上的listMessages方法,传递GraphKnownFolders.Inbox以检索表示收件箱中消息的GraphMessageInfo对象的集合。
  3. 迭代messageInfoColl集合。
  4. 对于每个GraphMessageInfo对象,调用IGraphClient 对象上的fetchMessage方法,并将getItemId方法作为参数传递以获取特定消息。
  5. 在循环内,您可以使用消息变量中获取的消息,例如读取其内容或使用MapiMessage类将其保存到文件中。
IGraphClient client = GraphClient.getClient(tokenProvider);
GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);

for (GraphMessageInfo messageInfo : messageInfoColl) {
MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}

从离线邮箱存储中提取邮件

离线邮箱存储是指在本地设备或计算机上存储电子邮件和相关数据,允许用户在没有有效互联网连接的情况下访问其电子邮件。我们的渐进式库允许您开发电子邮件客户端和应用程序,使用户即使在未连接到电子邮件服务器或互联网的情况下也能够处理电子邮件。以下代码片段及其步骤将向您展示如何利用该库的强大功能来打开 Outlook 个人存储 (PST) 文件、访问“收件箱”文件夹以及从中提取每封邮件。

  1. 创建一个 PersonalStorage 对象,调用PersonalStorage类的fromFile方法并传递 PST 文件的文件路径(“storage.pst”)。
  2. 通过 PersonalStorage 对象上的 getRootFolder 方法访问 PST 文件的根文件夹。
  3. 使用 getSubFolder 方法从根文件夹获取“Inbox”文件夹,并传递“Inbox”作为文件夹名称。
  4. 迭代收件箱文件夹中的邮件。
  5. 对于folder.enumerateMessages() 集合中的每个MessageInfo 对象,调用PersonalStorage 对象上的extractMessage 方法,传递messageInfo 参数以提取特定消息。
  6. 在循环内,您可以使用 msg 变量中提取的消息,例如使用 MapiMessage 类读取其内容或处理其元数据。
PersonalStorage pst = PersonalStorage.fromFile("storage.pst");
FolderInfo folder = pst.getRootFolder().getSubFolder("Inbox");

for (MessageInfo messageInfo : folder.enumerateMessages()) {

MapiMessage msg = pst.extractMessage(messageInfo);
}
结论

在本文中,我们学习了如何利用Aspose.Email for Java的强大功能进行电子邮件检索。通过支持 POP3、IMAP、EWS、Graph API 和离线邮箱存储,该库使您能够自定义应用程序的功能以满足特定需求。无论您是开发客户端应用程序、集成工具还是自定义解决方案,我们的 Java API 都能为您提供创建无缝且高效的消息处理体验的工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/412646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统部署前后端分离项目

一、Nginx简介 1.1 什么是nginx? Nginx&#xff08;发音同"engine x"&#xff09;是一个高性能的反向代理和 Web 服务器软件&#xff0c;最初是由俄罗斯人 Igor Sysoev 开发的。Nginx 的第一个版本发布于 2004 年&#xff0c;其源代码基于双条款 BSD 许可证发布&am…

Mysql常见函数和用法(重点)

目录 where子句中经常使用的运算符 order by 子句排序查询结果 合计 (count) 统计函数&#xff08;sum&#xff09; 求平均值函数&#xff08;avg&#xff09; 最大值&#xff08;max&#xff09;和最小值(min) groupby子句对列进行分组 字符串相关函数​编辑 数学相关…

华为ipv6 over ipv4 GRE隧道配置

思路&#xff1a; PC1访问PC2时&#xff0c;会先构造源ipv6为2001:1::2&#xff0c;目的IPV6为2001:2::2的ipv6报文&#xff0c;然后查看PC1的路由表&#xff0c;发送到R1&#xff0c;r1接收后&#xff0c;以目的IPV6地址2001:2::2查询IPV6路由表&#xff0c;出接口为tun0/0/0…

jQuery引入及下载方法

jQuery引入及下载方法 目录 jQuery引入及下载方法【方法1】cdn引入【方法2】下载本地文件 【方法1】cdn引入 直接在head引入jq <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&…

面试redis篇-13Redis为什么那么快

Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题使用I/O多路复用模型,非阻塞IOI/O多路复用模型 Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O多路复用模型主要就是实现了高效…

消息中间件篇之Kafka-消息不丢失

一、 正常工作流程 生产者发送消息到kafka集群&#xff0c;然后由集群发送到消费者。 但是可能中途会出现消息的丢失。下面是解决方案。 二、 生产者发送消息到Brocker丢失 1. 设置异步发送 //同步发送RecordMetadata recordMetadata kafkaProducer.send(record).get();//异…

python Matplotlib Tkinter-->tab切换1

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox import …

Unity发布webgl获取浏览器的URL

Unity发布webgl获取浏览器的URL Unity发布webgl之后获取浏览器的url 在unity中创建文件夹Plugins&#xff0c;然后添加添加文件UnityGetBrowserURL.jslib var GetUrlFunc {//获取地址栏的URLStringReturnValueFunction: function () {var returnStr window.top.location.hre…

软件无线电SDR加人工智能算法实现无人机频谱探测

通用软件无线电接收机作为传感器实时接收探测无线电信号&#xff0c;加上深度学习算法实现频谱识别&#xff0c;(https://img-blog.csdnimg.cn/5a6c4d89a047453a94f763f4e67aeb17.png)

折腾Chrome插件,让内容脚本与文本交互~

我们要用内容脚本&#xff08;content scripts&#xff09;来给插件装上一双慧眼&#xff0c;让它能在你浏览的页面上跳来跳去&#xff0c;和文字做游戏。这就像给插件喂了一颗智慧豆&#xff0c;让它变得聪明起来&#xff0c;能够直接和网页内容打招呼啦&#xff01; 在本章&…

学成在线_nacos配置_无法连接到nacos上的配置文件

问题 nacos配置完成后启动程序控制台提示无法连接到数据库 问题原因 无法连接到数据库实际上是没能成功找到nacos上的配置。因为自己的bootstrap文件的拓展名为.yml而不是.yaml。 解决方案 确保nacos上、配置文件中以及配置文件本身的拓展名都是yaml nacos, 如果不是重新创…

2024程序员容器化上云之旅-第2集-Ubuntu-WSL2-Windows11版:接近深洞

故事梗概 Java程序员马意浓在互联网公司维护老旧电商后台系统。 渴望学习新技术的他在工作中无缘Docker。 他开始自学Vue3并使用SpringBoot3完成了一个前后端分离的Web应用系统&#xff0c;并打算将其用Docker容器化后用K8s上云。 3 挑选工具 马意浓画好架构图后&#xff…

动态规划-最长公共子串(c)

动态规划 动态规划&#xff08;dynamic programming&#xff09;是一种算法设计方法。基本思想是在对一个问题的多阶段决策中&#xff0c;按照某一顺序&#xff0c;根据每一步所选决策的不同&#xff0c;会引起状态的转移&#xff0c;最后会在变化的状态中获取到一个决策序列。…

JAVA学习笔记11

1.标识符 1.1 标识符的命名规则和规范 1.1.1 标识符概念 ​ 1.Java对各种变量、方法和类等命名时使用的字符序列称为标识符 ​ 2.凡是自己可以起名字的地方都叫标识符 int num1 90。 1.1.2 标识符的命名规则&#xff08;必须遵守&#xff09; ​ 1.由26个英文字母、数字…

golang学习6,glang的web的restful接口传参

1.get传参 //get请求 返回json 接口传参r.GET("/getJson/:id", controller.GetUserInfo) 1.2.接收处理 package controllerimport "github.com/gin-gonic/gin"func GetUserInfo(c *gin.Context) {_ c.Param("id")ReturnSucess(c, 200, &quo…

redis八股

文章目录 数据类型字符串实现使用场景 List 列表实现使用场景 Hash 哈希实现使用场景 Set 集合实现使用场景 ZSet 有序集合实现使用场景 BitMap实现使用场景 Stream使用场景pubsub为什么不能作为消息队列 数据结构机制SDS 简单动态字符串压缩列表哈希表整数集合跳表quicklistli…

Vue3的8大生命周期

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

主从复制实现Redis集群

主从复制实现Redis集群实验 (一主二从): 实验环境: 使用Docker 搭建 Redis 版本 5.0.5 打开一个终端窗口&#xff0c;在其中运行如下命令创建一个名为redis-master的Redis容器。注意&#xff0c;它的端口是6379 (本地的端口:映射到容器的端口) docker run -itd--name redis-m…

Shopify使用元字段对产品和产品变体进行自定义配置

引言 在Shopify上运营电子商务店铺时&#xff0c;有时您可能需要对产品和产品变体进行自定义配置。这可以包括添加额外的属性、规格或其他自定义字段&#xff0c;以满足特定的业务需求。Shopify提供了元字段的功能&#xff0c;使您能够灵活地自定义产品和产品变体的配置。在本…

[Docker 教学] 常用的Docker 命令

Docker是一种流行的容器化技术。使用Docker可以将数据科学应用程序连同代码和所需的依赖关系打包成一个名为镜像的便携式工件。因此&#xff0c;Docker可以简化开发环境的复制&#xff0c;并使本地开发变得轻松。 以下是一些必备的Docker命令列表&#xff0c;这些命令将在你下一…