Microsoft Exchange Server 上的对话称为线程中的电子邮件消息组。简而言之,一封电子邮件及其所有回复都被称为对话。在本文中,我们将向您展示如何以编程方式在 MS Exchange Server 中处理对话。特别是,您将学习如何在 C# .NET 中在 MS Exchange Server 上查找、复制、移动和删除对话。
- 在 MS Exchange Server 上处理对话的 C# .NET API
- 在 C# 中查找 MS Exchange Server 上的对话
- 在 C# 中复制 MS Exchange Server 上的对话
- 在 C# 中移动 MS Exchange Server 上的对话
- 在 C# 中删除 MS Exchange Server 上的对话
在 MS Exchange Server 上处理对话的 C# .NET API
为了管理 Microsoft Exchange Server 上的对话,我们将使用 Aspose.Email for .NET。它是一个强大的 API,提供了一系列功能来实现电子邮件客户端应用程序。此外,它还允许您无缝访问 MS Exchange Server 的各种服务。您可以 下载 API 的 DLL 或使用以下命令从 NuGet 安装它。
PM> Install-Package Aspose.Email
在 C# 中查找 MS Exchange Server 上的对话
以下是在 C# 中从 MS Exchange Server 中的文件夹中查找对话的步骤。
- 首先,使用用户名、密码和域创建并初始化 NetworkCredential 对象。
- 然后,使用邮箱 URI 和 NetworkCredential 对象初始化 IEWSClient。
- 调用 IEWSClient.FindConversations(IEWSClient.MailboxInfo.InboxUri) 方法并在 ExchangeConversation 数组中获取对话。
- 最后,遍历数组中的每个 ExchangeConversation 对象并检索其详细信息。
以下代码示例显示了如何在 C# 中从 MS Exchange Server 中的文件夹中查找对话。
string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);
// 连接到 MS Exchange 服务器
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");
// 从收件箱获取对话
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);
// 显示所有对话
foreach (ExchangeConversation conversation in conversations)
{
// 显示 Id 和 Topic 等对话属性
Console.WriteLine("Topic: " + conversation.ConversationTopic);
Console.WriteLine("Flag Status: " + conversation.FlagStatus.ToString());
Console.WriteLine();
}
在 C# 中复制 MS Exchange Server 上的对话
您还可以将对话从一个文件夹复制到另一个文件夹,而无需编写复杂的代码。为了演示,让我们看看如何在 C# .NET 中将对话从收件箱复制到 Exchange Server 的已删除项目文件夹。
- 首先,使用用户名、密码和域创建并初始化 NetworkCredential 对象。
- 然后,使用邮箱 URI 和 NetworkCredential 对象初始化 IEWSClient。
- 调用 IEWSClient.FindConversations(IEWSClient.MailboxInfo.InboxUri) 方法并在 ExchangeConversation 数组中获取对话。
- 循环遍历数组中的每个 ExchangeConversation 并过滤所需的。
- 最后,使用 IEWSClient.CopyConversationItems(ExchangeConversation.ConversationId, client.MailboxInfo.DeletedItemsUri) 方法复制对话。
以下代码示例显示如何使用 C# .NET 在 MS Exchange Server 中复制对话。
string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);
// 连接到 MS Exchange 服务器
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");
// 获取对话
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);
foreach (ExchangeConversation conversation in conversations)
{
Console.WriteLine("Topic: " + conversation.ConversationTopic);
// 根据某些条件复制对话项目
if (conversation.ConversationTopic.Contains("test email") == true)
{
client.CopyConversationItems(conversation.ConversationId, client.MailboxInfo.DeletedItemsUri);
Console.WriteLine("Copied the conversation item to another folder");
}
}
在 C# 中移动 MS Exchange Server 上的对话
在上一节中,我们只是将对话从一个文件夹复制到另一个文件夹。但是,在某些情况下,您可能需要将对话移至特定文件夹。以下是在 C# .NET 中在 MS Exchange Server 中移动对话的步骤。
- 首先,使用用户名、密码和域创建并初始化 NetworkCredential 对象。
- 然后,使用邮箱 URI 和 NetworkCredential 对象初始化 IEWSClient。
- 调用 IEWSClient.FindConversations(IEWSClient.MailboxInfo.InboxUri) 方法并在 ExchangeConversation 数组中获取对话。
- 循环遍历数组中的每个 ExchangeConversation 并过滤所需的。
- 最后,使用 IEWSClient.MoveConversationItems(ExchangeConversation.ConversationId, client.MailboxInfo.DeletedItemsUri) 方法移动对话。
以下代码示例显示了如何使用 C# .NET 在 MS Exchange Server 中移动对话。
string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);
// 连接到 MS Exchange 服务器
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");
// 获取对话
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);
foreach (ExchangeConversation conversation in conversations)
{
Console.WriteLine("Topic: " + conversation.ConversationTopic);
// 根据某些条件移动对话项目
if (conversation.ConversationTopic.Contains("test email") == true)
{
client.MoveConversationItems(conversation.ConversationId, client.MailboxInfo.DeletedItemsUri);
Console.WriteLine("Moved the conversation item to another folder");
}
}
在 C# 中删除 MS Exchange Server 上的对话
最后但并非最不重要的一点,让我们看看如何在 C# 中从 MS Exchange Server 中删除对话。
- 首先,使用用户名、密码和域创建并初始化 NetworkCredential 对象。
- 然后,使用邮箱 URI 和 NetworkCredential 对象初始化 IEWSClient。
- 之后,调用 IEWSClient.FindConversations(IEWSClient.MailboxInfo.InboxUri) 方法并在 ExchangeConversation 数组中获取对话。
- 循环遍历数组中的每个 ExchangeConversation 并过滤所需的。
- 最后,使用 IEWSClient.DeleteConversationItems(ExchangeConversation.ConversationId) 方法删除对话。
以下代码示例显示了如何在 C# .NET 中从 MS Exchange Server 中删除对话。
string mailboxUri = "https://ex2010/ews/exchange.asmx";
string username = "test.exchange";
string password = "pwd";
string domain = "ex2010.local";
NetworkCredential credentials = new NetworkCredential(username, password, domain);
// 连接到 MS Exchange 服务器
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");
// 获取对话
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);
foreach (ExchangeConversation conversation in conversations)
{
Console.WriteLine("Topic: " + conversation.ConversationTopic);
// 根据某些条件删除会话项
if (conversation.ConversationTopic.Contains("test email") == true)
{
client.DeleteConversationItems(conversation.ConversationId);
Console.WriteLine("Deleted the conversation item");
}
}
获取免费 API 许可证
您可以获得 免费临时许可证 以使用 Aspose.Email for .NET,而不受评估限制。
结论
在本文中,您学习了如何使用 C# 在 Microsoft Exchange Server 中管理对话。您已经了解了如何在 C# 中以编程方式在 MS Exchange Server 上查找、复制、移动和删除对话。此外,您可以浏览 文档 以了解有关 Aspose.Email for .NET 的更多信息。此外,您可以通过我们的 论坛 提问。