C#のMSExchangeServerで会話を操作する

Microsoft Exchange Serverでの会話は、スレッド内の電子メールメッセージのグループと呼ばれます。簡単に言えば、電子メールとそのすべての返信は会話であることが知られています。この記事では、MSExchangeServerでプログラムで会話を操作する方法を紹介します。特に、C#.NETのMS Exchange Serverで会話を検索、コピー、移動、および削除する方法を学習します。

MS ExchangeServerで会話を処理するためのC#.NET API

Microsoft Exchange Serverでの会話を管理するには、Aspose.Email for.NETを使用します。これは、電子メールクライアントアプリケーションを実装するためのさまざまな機能を提供する強力なAPIです。また、MSExchangeServerのさまざまなサービスにシームレスにアクセスできます。次のコマンドを使用して、APIのDLLをダウンロードするか、NuGetからインストールできます。

PM> Install-Package Aspose.Email

C#でMSExchangeServerの会話を検索する

以下は、C#のMSExchangeServerのフォルダーから会話を検索する手順です。

次のコードサンプルは、C#のMSExchangeServerのフォルダーから会話を検索する方法を示しています。

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

// MSExchangeServerに接続します
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
Console.WriteLine("Connected to Exchange");

// 受信トレイから会話を取得
ExchangeConversation[] conversations = client.FindConversations(client.MailboxInfo.InboxUri);

// すべての会話を表示する
foreach (ExchangeConversation conversation in conversations)
{
    // IDやトピックなどの会話プロパティを表示する
    Console.WriteLine("Topic: " + conversation.ConversationTopic);
    Console.WriteLine("Flag Status: " + conversation.FlagStatus.ToString());
    Console.WriteLine();
}

C#でMSExchangeServerの会話をコピーする

複雑なコードを記述せずに、あるフォルダから別のフォルダに会話をコピーすることもできます。デモンストレーションとして、会話を受信トレイからC#.NETのExchangeServerの削除済みアイテムフォルダーにコピーする方法を見てみましょう。

次のコードサンプルは、C#.NETを使用してMSExchangeServerで会話をコピーする方法を示しています。

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

// MSExchangeServerに接続します
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#でMSExchangeServerの会話を移動する

前のセクションでは、会話を1つのフォルダーから別のフォルダーにコピーしました。ただし、場合によっては、会話を特定のフォルダーに移動する必要があります。以下は、C#.NETのMSExchangeServerで会話を移動する手順です。

次のコードサンプルは、C#.NETを使用してMSExchangeServerで会話を移動する方法を示しています。

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

// MSExchangeServerに接続します
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#でMSExchangeServerの会話を削除する

最後になりましたが、C#でMSExchangeServerから会話を削除する方法を見てみましょう。

次のコードサンプルは、C#.NETのMSExchangeServerから会話を削除する方法を示しています。

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

// MSExchangeServerに接続します
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.Emailfor.NETを使用できます。

結論

この記事では、C#を使用してMicrosoftExchangeServerで会話を管理する方法を学習しました。 C#でプログラムによってMS Exchange Serverで会話を検索、コピー、移動、および削除する方法を見てきました。さらに、ドキュメントを調べて、Aspose.Emailfor.NETの詳細を読むことができます。また、フォーラムから質問することもできます。

関連項目