通过 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 都能为您提供创建无缝且高效的消息处理体验的工具。

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Java 处理邮件正文的图片,可以使用 JavaMail API 和 Java Activation Framework(JAF)。 以下是一个简单的示例代码,演示如何从收到的电子邮件提取图片: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class ReadEmailWithImage { public static void main(String[] args) throws Exception { // 邮件服务器的属性 Properties props = new Properties(); props.put("mail.imap.host", "imap.example.com"); props.put("mail.imap.port", "993"); props.put("mail.imap.ssl.enable", "true"); // 创建一个会话 Session session = Session.getDefaultInstance(props); // 连接到邮件服务器并打开收件箱 Store store = session.getStore("imap"); store.connect("username", "password"); Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); // 从收件箱获取邮件消息 Message[] messages = inbox.getMessages(); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; Multipart multipart = (Multipart) message.getContent(); for (int j = 0; j < multipart.getCount(); j++) { BodyPart bodyPart = multipart.getBodyPart(j); String disposition = bodyPart.getDisposition(); if (disposition != null && disposition.equals(BodyPart.INLINE) && bodyPart instanceof MimeBodyPart) { MimeBodyPart mimeBodyPart = (MimeBodyPart) bodyPart; if (mimeBodyPart.getContentType().startsWith("image/")) { // 处理邮件正文的图片 // 获取图片并进行处理,例如保存到本地文件系统 // 例如,保存到本地文件系统 String fileName = mimeBodyPart.getFileName(); mimeBodyPart.saveFile("path/to/" + fileName); } } } } // 关闭收件箱和邮件会话 inbox.close(false); store.close(); } } ``` 在上面的示例,我们使用 IMAP 协议连接到邮件服务器,并打开收件箱。我们从收件箱获取邮件消息,并遍历每个消息的所有部分。如果部分的 Content-Disposition 是 "inline",则该部分是邮件正文的图片。我们使用 `MimeBodyPart` 获取图片,然后进行处理,例如将其保存到本地文件系统。 请注意,您需要将示例代码的以下内容替换为您自己的值: - `imap.example.com` - 您的邮件服务器主机名 - `username` - 您的邮件服务器用户名 - `password` - 您的邮件服务器密码 - `INBOX` - 要打开的收件箱名称 - `path/to/` - 图片保存到本地文件系统的路径

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值