Web/Worker ロールからのメール送信について

本社側の blog にて情報提供はされているのですが、最近、よく質問があるので、Windows Azure からのメール送信について記述しておきます。

Steve Marx が blog の中で記述しているように、専用の SMTP サーバーはありません。また、Worker ロールを使って SMTP サーバーを立てるということも考えられますが、スパム対策等のことを考えると、他の手段を考えた方が良さそうです。

ではどうするかですが、企業内の SMTP サーバーを使うことも可能ですが、その場合には、この blog の Part1 に記述されているような仕組みを準備する必要があります。それよりも Part2 に記述されている Exchange Online を使うと短時間にサービスの構成が可能です。Exchange Online では、30日間無料トライアルも用意されているため、すぐに評価が可能です。以下、簡単に評価方法を記述しておきます。

(1) Exchange Online30日間無料トライアルに申し込む

(2) Exchange Web Services Managed API をインストール

※現状(2011/3/29)、Version 1.1

(3) Visual Studio のプロジェクトで、(2) でインストールしたフォルダの “Microsoft.Exchange.WebServices.dll” を参照追加

※フォルダは、x:\Program Files\Microsoft\Exchange\Web Services\1.1

(4) 以下のコードで簡単なメッセージを送信

ExchangeService ews = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

ews.Credentials = new NetworkCredential("email address", "password");

ews.Url = new Uri("https://red003.mail.apac.microsoftonline.com/EWS/Exchange.asmx");

EmailMessage msg = new EmailMessage(ews);

msg.From = new EmailAddress("from name", "from address");

msg.Subject = "テストメール";

msg.Body = new MessageBody(BodyType.Text, "お疲れ様です");

msg.ToRecipients.Add("to address");

msg.SendAndSaveCopy();

上記で、https://red003.mail... は、Exchange Online Web サービスの URL になります。アジアでは、このアドレスを利用します。このアドレスは、自動検出の仕組みも使えますが、Outlook から接続する訳ではないので、今回は省略しています。必要な場合は松崎さんの blog で。メール受信は、Part2の blog を見て下さい。