Exchange の電子メールと EWS
電子メール メッセージの処理方法について説明します。これには、Exchange で EWS マネージ API または EWS を使用して電子メールを作成したり、他の電子メール関連タスクを実行する方法が含まれます。
Exchange で中核となるのは電子メールです。 ところで、電子メールとは何でしょうか? Exchange では電子メール メッセージは厳密に型指定されたアイテムです。つまり、送信する前であっても特定の一連のプロパティが含まれます。 電子メール メッセージは、EWS マネージ API では EmailMessage クラスによって、EWS では Message 要素とその子要素として表されます。
EWS マネージ API では、EmailMessage オブジェクトは Item オブジェクトから派生します。 EmailMessage クラスは、ほぼすべてのメッセージング シナリオで共通な EmailMessage.Sender および EmailMessage.IsRead などの追加プロパティを提供して Item クラスを拡張します。 電子メール メッセージを取得、更新、削除するほとんどの操作は、EmailMessage オブジェクトまたは基本 Item オブジェクトを使用して行えます。作業対象のプロパティが EmailMessageSchema クラスまたは ItemSchema クラスのどちらにあるかによって使用するオブジェクトが異なります。 アイテムの作成の場合には異なります。Item クラスにはコンストラクターがないため、電子メールを作成する場合、EmailMessage コンストラクターを使用して作成し、EmailMessage.Save または EmailMessage.SendAndSaveCopy を使用して保存したり、送信してから保存したりします。
同様に、EWS では、CreateItem 操作を Message 要素と併用して電子メール メッセージを作成します。 EWS を使用してメールを取得、更新、削除するには、追加プロパティが電子メール メッセージで使用できるという点を除き、変更対象が電子メール メッセージであるということは重要とはなりません。 その他の厳密に型指定されたアイテムに使用されるのと同じ操作が電子メール メッセージにも使用されます。
タスク | EWS マネージ API メソッド | EWS 操作 |
---|---|---|
作成 |
EmailMessage.Save |
CreateItem |
取得 |
EmailMessage.Bind |
GetItem |
更新 |
Item.Update |
UpdateItem |
削除 |
Item.Delete |
DeleteItem |
電子メール メッセージは単純な厳密に型指定されたアイテムであるため、場合によっては、汎用アイテムを処理するのと同じ方法で扱えます。
EWS マネージ API を使用して電子メール メッセージを作成する
次の例のコードに示されているように、EWS マネージ API の Save メソッドを使用して電子メール メッセージを作成できます。 この例では、[下書き] フォルダーにメッセージを保存しますが、メッセージは送信しません。 メッセージを送信したり、メッセージの作成と送信を 1 ステップで行う方法については、「Exchange で EWS を使用してメール メッセージを送信する」を参照してください。
この例では、service が有効な ExchangeService オブジェクトであり、ユーザーが Exchange サーバーから既に認証されていると想定しています。
// Create a new email message.
EmailMessage message = new EmailMessage(service);
// Set properties on the email message.
message.ToRecipients.Add("mack@contoso.com");
message.Subject = "Project priorities";
message.Body = "(1) Buy pizza, (2) Eat pizza";
// Save the email message to the Drafts folder (where it can be retrieved, updated, and sent at a later time).
// This method call results in a CreateItem call to EWS.
message.Save(WellKnownFolderName.Drafts);
Console.WriteLine("A draft email message with the subject '" + message.Subject + "' has been saved to the Drafts folder.");
EWS を使用して電子メール メッセージを作成する
次の例に示されているように、EWS CreateItem 操作を使用して電子メール メッセージを作成できます。 また、これは電子メール メッセージが作成されるときに EWS マネージ API が送信する XML 要求でもあります。 次の例では、[下書き] フォルダーにメッセージを保存しますが、メッセージは送信しません。 メッセージを送信したり、メッセージの作成と送信を 1 ステップで行う方法については、「Exchange で EWS を使用してメール メッセージを送信する」を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010_SP2" />
</soap:Header>
<soap:Body>
<m:CreateItem MessageDisposition="SaveOnly">
<m:SavedItemFolderId>
<t:DistinguishedFolderId Id="drafts" />
</m:SavedItemFolderId>
<m:Items>
<t:Message>
<t:Subject>Project priorities</t:Subject>
<t:Body BodyType="HTML">(1) Buy pizza, (2) Eat pizza</t:Body>
<t:ToRecipients>
<t:Mailbox>
<t:EmailAddress>mack@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:ToRecipients>
</t:Message>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>
サーバーは、CreateItemResponse メッセージで CreateItem 要求に応答します。このメッセージには、電子メールが正常に作成されたことを示す NoError の ResponseCode 値、および新しく作成されたメッセージの ItemId が含まれます。
EWS マネージ API を使用して電子メール メッセージを取得、更新、削除する
EWS マネージ API を使用すると、Exchange ストアの汎用アイテムで実行するのと同じ方法で電子メール メッセージの取得、更新、削除を行えます。 詳細は、「Exchange で EWS を使用して Exchange メールボックス アイテムを操作する」を参照してください。
電子メール メッセージを更新する場合は、書き込み可能な電子メール メッセージ プロパティの一覧を「Exchange における EWS でのメールのプロパティと要素」で確認してください。 下書きメッセージを更新してから送信するには、「EWS マネージ API を使用して下書き電子メール メッセージを送信する」をご覧ください。
EWS を使用して電子メール メッセージを取得、更新、削除する
EWS を使用すると、Exchange ストアの汎用アイテムで実行するのと同じ方法で電子メール メッセージの取得、更新、削除を行えます。 詳細は、「Exchange で EWS を使用して Exchange メールボックス アイテムを操作する」を参照してください。
電子メール メッセージを更新する場合は、書き込み可能な電子メール メッセージ プロパティの一覧を「Exchange における EWS でのメールのプロパティと要素」で確認してください。 下書きメッセージを更新してから送信するには、「EWS を使用して下書き電子メール メッセージを送信する」をご覧ください。