在 C# 中使用 MS Exchange Server 中的对话

Microsoft Exchange Server 上的对话称为线程中的电子邮件消息组。简而言之,一封电子邮件及其所有回复都被称为对话。在本文中,我们将向您展示如何以编程方式在 MS Exchange Server 中处理对话。特别是,您将学习如何在 C# .NET 中在 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 中的文件夹中查找对话的步骤。

以下代码示例显示了如何在 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 的已删除项目文件夹。

以下代码示例显示如何使用 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 中移动对话的步骤。

以下代码示例显示了如何使用 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 中删除对话。

以下代码示例显示了如何在 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 的更多信息。此外,您可以通过我们的 论坛 提问。

也可以看看