纯干货!5 种在 C# .NET 检索电子邮件的有效方法

构建电子邮件处理应用程序时,关键步骤之一是设置可靠且快速的功能来从收件箱检索消息。在本文中,我们将探讨如何利用强大的 .NET 库通过 POP3、IMAP、EWS、Graph API 在 C# 中检索电子邮件,并以 pst 文件为例从各种格式的离线邮箱存储中检索电子邮件。本文附有清晰的代码示例,您可以使用它们来测试该库的功能。

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

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

用于检索消息的 .NET API

要从 C# 中的服务器或邮箱存储中提取消息,我们将使用Aspose.Email for .NET。这是一个功能强大的 API 库,允许开发人员在其 .NET 应用程序中使用电子邮件。它提供了一套全面的功能,可在各种场景中处理电子邮件。它简化了创建、操作和转换电子邮件、处理电子邮件附件、日历、联系人等以及从邮箱中提取消息并根据需要管理其内容的工作。下载DLL 或使用以下命令从NuGet安装后,您可以轻松地将 API 实现到您的项目中:

PM> Install-Package Aspose.Email

通过 POP3 检索电子邮件

通过 POP3 协议,电子邮件可以从服务器下载到本地系统,从而轻松访问和管理。其功能可以轻松集成到您的应用程序中。Aspose.Email for .NET POP3Client类用于创建 POP3 客户端对象以进行消息操作。

以下代码示例和步骤演示了如何使用 POP3 客户端连接到 POP3 邮件服务器、检索邮件列表以及获取邮件内容:

  1. 首先,创建 POP3 客户端对象的实例。
  2. 由于 POP3 协议缺乏内置加密,因此电子邮件的传输容易受到拦截和未经授权的访问,因此它设置 SecurityOptions 属性使用服务器的安全机制。
  3. 在 foreach 循环内,代码迭代邮箱中的每条消息并使用FetchMessage方法获取消息内容。
using Aspose.Email;
using Aspose.Email.Clients.Pop3;

using (var client = new Pop3Client("pop3.server.com", "username", "password"))
{
client.SecurityOptions = SecurityOptions.Auto;

foreach (var messageInfo in pop3Client.ListMessages())
{
var eml = client.FetchMessage(messageInfo.SequenceNumber);
}
}

您可以进一步调整代码以满足您的特定需求,并以所需的方式将获取的消息内容与 .NET 库的其他功能结合使用。

使用 IMAP 检索邮件

IMAP 是另一种流行的协议,它提供了一种更加同步和通用的电子邮件访问方法。与 POP3 不同,IMAP 将电子邮件保留在服务器上,同时允许您从多个设备管理和组织它们。在一台设备上所做的更改会反映在所有设备上,从而提供无缝且一致的电子邮件体验。

Aspose.Email for .NET 为您提供ImapClient类及其属性来连接到 IMAP 邮件服务器并管理文件夹中的电子邮件。以下代码示例及其步骤将向您展示如何从服务器获取消息:

  1. 实例化 IMAPClient 实例。
  2. 通过设置SecurityOptions属性来提供电子邮件通信的安全性。
  3. 显示收件箱消息,一一获取它们。
using Aspose.Email;
using Aspose.Email.Clients.Imap;

using (var client = new ImapClient("imap.server.com", "username", "password"))
{
client.SecurityOptions = SecurityOptions.Auto;
client.SelectFolder("Inbox");

foreach (var messageInfo in client.ListMessages())
{
var eml = client.FetchMessage(messageInfo.UniqueId);
}
}
使用 EWSClient 从 MS Exchange Server 检索消息

对于与 Microsoft Exchange 服务器交互的应用程序,Aspose.Email for .NET 提供对 EWS 的支持。该协议有助于高级操作,包括电子邮件检索、日历管理和联系人同步。EWS 对于需要与 Microsoft Exchange 环境集成的应用程序特别有利。

为了连接到 Exchange 服务器并检索电子邮件,我们将使用.NET API 的IEWSClient类。下面提供的代码示例演示了如何建立与邮箱的连接、列出收件箱文件夹中的邮件,然后获取每封电子邮件。此过程使开发人员能够在其 .NET 应用程序中以编程方式高效地访问和操作电子邮件数据。

  1. 通过调用C# 库的GetEWSClient方法初始化 EWS 客户端。
  2. 使用ListMessages方法在 foreach 循环中迭代收件箱消息。
  3. 使用FetchMessage方法获取电子邮件的内容。
using Aspose.Email;
using Aspose.Email.Clients.Exchange.WebService;

using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "UserName", "Password"))
{
foreach(var msgInfo in client.ListMessages(client.MailboxInfo.InboxUri)
{
var eml = client.FetchMessage(msgInfo.UniqueUri);
}
}

根据应用程序的要求,您可以对获取的 eml 变量执行其他处理。这可能包括解析电子邮件标头、提取附件、分析电子邮件正文或使用我们功能丰富的 API 进行任何其他相关操作。

Microsoft Graph 从服务器提取消息

Aspose.Email for .NET 使开发人员能够利用 Microsoft Graph API 的强大功能进行电子邮件检索。通过集成 Graph API,您的应用程序可以访问统一端点以检索电子邮件、日历和联系人。当您希望创建全面的多功能应用程序时,这种集成非常有价值。

下面给出的代码示例和步骤演示了如何使用 Microsoft Graph API 处理电子邮件文件夹和消息。它创建一个图形客户端,检索“收件箱”文件夹,并迭代该文件夹中的消息以获取每条消息。

  1. 通过从GraphClient类调用GetClient方法,并将 tokenProvider 和“租户 ID”作为参数传递,创建一个 Graph 客户端实例。
  2. 使用客户端的ListFolders方法检索所有文件夹的集合。
  3. 通过对文件夹集合使用 FirstOrDefault LINQ 方法获取“Inbox”文件夹。lambda 表达式检查文件夹的DisplayName属性是否与“Inbox”匹配。
  4. 通过在客户端上调用ListMessages来迭代检索到的folder.ItemId 中的消息。
  5. 对于每条消息,通过在客户端上调用FetchMessage并传递 msgInfo.ItemId 作为参数来获取消息详细信息。
using Aspose.Email;
using Aspose.Email.Clients.Graph;

// Create a Graph client
using (var client = GraphClient.GetClient(tokenProvider, "tenant ID"))
{
var folder = client.ListFolders().FirstOrDefault(folder => folder.DisplayName.Equals("Inbox"));

foreach (var msgInfo in client.ListMessages(folder.ItemId))
{
var msg = client.FetchMessage(msgInfo.ItemId);
}
}
从离线邮箱存储中提取邮件

我们全面的 C# 库使您能够创建具有离线邮箱存储功能的应用程序。通过利用此功能,您可以在本地下载和存储电子邮件,即使没有互联网连接也能确保访问。这对于需要在旅途中无缝访问电子邮件的用户特别有用。

该库适用于不同格式的独立存储,例如 PST、MBOX、OLM、TGZ,但在本文中,我们将考虑从 PST 获取电子邮件的示例。

为了实现此功能并离线访问邮箱信息,我们将使用库的PersonalStorage类。以下是代码示例以及从 pst 文件获取消息的步骤:

  1. 首先通过调用PersonalStorage类的FromFile方法并将 PST 文件的路径作为参数传递来创建新的个人存储对象。

  2. 通过对个人存储对象的RootFolder属性调用GetSubfolder方法来初始化名为“folder”的变量。传递字符串“Inbox”作为参数来指定要检索的文件夹的名称。

  3. 使用 foreach 循环迭代“folder”对象的EnumerateMessages方法返回的集合中的每个“msgInfo”对象。

  4. 在循环内,通过调用个人存储对象上的ExtractMessage方法创建一个名为“msg”的新变量。将当前“msgInfo”对象的EntryIdString属性作为参数传递,以指定要提取的消息。

该代码将为文件夹中的每条消息执行步骤 3 和 4 中指定的操作。

using Aspose.Email.Mapi;
using Aspose.Email.Storage.Pst;

using (var pst = PersonalStorage.FromFile("storage.pst"))
{
var folder = pst.RootFolder.GetSubfolder("Inbox");

foreach(var msgInfo in folder.EnumerateMessages())
{
var msg = pst.ExtractMessage(msgInfo.EntryIdString);
}
}

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

猜你喜欢

转载自blog.csdn.net/m0_67129275/article/details/133272309