使用 C# .NET 检索电子邮件

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

.NET API 检索消息

要从服务器或邮箱存储中提取消息,我们将使用 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 方法获取消息内容。

您可以进一步调整代码以适应您的特定需求,并利用获取的消息内容与 .NET 库的其他功能。

使用 IMAP 检索消息

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

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

  1. 实例化 IMAPClient 实例。
  2. 通过设置 SecurityOptions 属性来提供电子邮件通信的安全性。
  3. 逐个获取收件箱消息。

使用 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 方法获取电子邮件消息的内容。

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

使用 Microsoft Graph 从服务器提取消息

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

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

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

从离线邮箱存储中提取消息

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

该库与不同格式的独立存储(如 PST、MBOX、OLM、TGZ)良好兼容,但在本文中,我们将考虑从 PST 获取电子邮件的示例。

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

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

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

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

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

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

结论

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

另请参见