IT部門は、サービスアカウントの作成から共有メールボックスへの移行を進めています。部門のすべてのメールアカウントが共有メールボックスに変換されています。これまで、私はEWSを使用して、次のコードを使用してWebアプリから受信者に電子メールを送信していました。
ExchangeService service = new ExchangeService();
service = new ExchangeService(ExchangeVersion.Exchange2013_SP1)
{
Credentials = new NetworkCredential("[email protected]", "Password1"),
Url = new Uri("https://Outlook.office365.com/EWS/Exchange.asmx")
};
email = new EmailMessage(service);
email.Body = new MessageBody(BodyType.HTML, Message.ToString());
email.ToRecipients.Add(Recipient.email);
email.SendAndSaveCopy();
}
メールアドレスとパスワードをハードコーディングする代わりに、共有メールボックスを使用してメールを送信するにはどうすればよいですか?私が使用しているメールアドレスは、現在のパスワードセキュリティ基準に該当しないサービスアカウントです。このため、部門のメールを共有メールボックスに変更しています。
ActiveDirectoryからユーザーを認証するWindows認証を使用しています。
EWSを引き続き使用する場合は、共有メールボックスを使用するためのサービスアカウントが必要になります(アプリが共有メールボックスに対するSendAS権限を持つユーザーになりすますことができない場合)。たとえば、共有メールボックスのサービスアカウントSendAs権限を付与します。送信先アドレスと送信済みアイテムフォルダを共有メールボックスのフォルダに設定します(共有メールボックス送信済みアイテムフォルダに保存されたメッセージのコピーが必要な場合)。例えば
email.From = new EmailAddress("[email protected]");
Mailbox SharedMailbox = new Mailbox("[email protected]");
FolderId SharedMailboxSendItems = new FolderId(WellKnownFolderName.SentItems, SharedMailbox);
email.SendAndSaveCopy(SharedMailboxSendItems);
サービスアカウントを削除できるより良いアプローチは、新しいREST API https://msdn.Microsoft.com/en-us/office)を使用することです。/office365/api/mail-rest-operations 次に、メールを送信し、証明書認証を利用する権限を持つアプリを作成します https://msdn.Microsoft.com/en-us/office/ office365/howto/building-service-apps-in-office-365 。これにより、サービスアカウントのライセンス要件を取り除くことができ、ハードコードされた資格情報がなくなったため、はるかに安全なアプリケーションが提供されます。アプリは、必要なことだけにアクセスでき、他には何もありません。