Работа с беседами в MS Exchange Server на C#

Разговоры на Microsoft Exchange Server называются группой сообщений электронной почты в потоке. Проще говоря, электронное письмо и все его ответы, как известно, представляют собой беседу. В этой статье мы покажем вам, как программно работать с диалогами в MS Exchange Server. В частности, вы узнаете, как находить, копировать, перемещать и удалять диалоги на сервере MS Exchange в C# .NET.

С# .NET API для работы с беседами на сервере MS Exchange

Для управления беседами на Microsoft Exchange Server мы будем использовать Aspose.Email для .NET. Это мощный API, предоставляющий ряд функций для реализации клиентских приложений электронной почты. Кроме того, он позволяет беспрепятственно получать доступ к различным службам MS Exchange Server. Вы можете либо скачать библиотеку DLL API, либо установить ее из NuGet с помощью следующей команды.

PM> Install-Package Aspose.Email

Найти диалоги на сервере MS Exchange в C#

Ниже приведены шаги для поиска разговоров из папки в MS Exchange Server на C#.

В следующем примере кода показано, как найти беседы из папки в MS Exchange Server на C#.

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);
    Console.WriteLine("Flag Status: " + conversation.FlagStatus.ToString());
    Console.WriteLine();
}

Скопируйте беседу на MS Exchange Server в C#

Вы также можете копировать разговоры из одной папки в другую без написания сложного кода. Для демонстрации давайте посмотрим, как копировать разговоры из папки «Входящие» в папку удаленных элементов Exchange Server в C# .NET.

В следующем примере кода показано, как скопировать диалог в MS Exchange Server с помощью C# .NET.

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");
    }
}

Переместить беседу на MS Exchange Server в C#

В предыдущем разделе мы просто копировали разговоры из одной папки в другую. Однако в некоторых случаях вам может потребоваться переместить беседу в определенную папку. Ниже приведены шаги по перемещению диалогов в MS Exchange Server в C# .NET.

В следующем примере кода показано, как переместить диалог в MS Exchange Server с помощью C# .NET.

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");
    }
}

Удалить беседу на сервере MS Exchange в C#

И последнее, но не менее важное: давайте посмотрим, как удалить диалог с MS Exchange Server в C#.

В следующем примере кода показано, как удалить диалог с сервера MS Exchange в C# .NET.

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 для .NET без ограничений на пробную версию.

Вывод

В этой статье вы узнали, как управлять диалогами в Microsoft Exchange Server с помощью C#. Вы видели, как программно на C# находить, копировать, перемещать и удалять диалоги на сервере MS Exchange. Кроме того, вы можете изучить документацию, чтобы узнать больше об Aspose.Email для .NET. Также вы можете задать свои вопросы на нашем форуме.

Смотрите также