.NET Frameworkを利用したメールの送信
この記事は、「WEB+DB PRESS Vol.14」(技術評論社)に掲載していただいた記事の元原稿(必要に応じて加筆/修正/削除をしています)を公開するものです。
メールの送信
C#のプログラムからメールを送信するには、System.Web.Mailネームスペースのオブジェクトを使用します(リスト:WebLauncher.cs:SendMailメソッド)。
リスト:WebLauncher.cs:SendMailメソッド
private void SendMail(string to, Exception e) { if (smtpServer != null && smtpServer != String.Empty) { System.Web.Mail.SmtpMail.SmtpServer = smtpServer; } ...省略... string temptxt = Path.ChangeExtension(tempf, ".txt"); ...省略... System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(); mail.Subject = "[exception]" + applicationName; mail.To = to; mail.Attachments.Add(new System.Web.Mail.MailAttachment(temptxt)); ...省略... System.Text.StringBuilder sb = new System.Text.StringBuilder(1000); sb.Append(DateTime.Now); ...省略... mail.Body = sb.ToString(); System.Web.Mail.SmtpMail.Send(mail); ...省略...
メールの送信には、SmtpMailクラスのSendスタティックメソッドを使用します。実際のメールには、MailMessageオブジェクトを作成して使用することになります。また、添付ファイルの扱いがMSDNのMailMessage#Attachmentsプロパティの説明ではわかりにくいためここで例示しましたが、MailAttachmentオブジェクトを作成して、Attachmentsプロパティで示されるIListインターフェイスに対してAddします。
なお、送信先のSMTPサーバーは、Windows XP Professionalの場合、デフォルトでIISのSMTPサーバーが利用されます。可能ならば以下の理由からそのまま利用すべきです。
- 宛先のSMTPサーバーが送信時点でオフラインの場合スプールされる
- IISのインストールのみで特別な設定が不要
ただし、サーバーと異なり個々のワークステーションにSMTPサーバーを立てるのが妥当かどうかは検討の余地があります。
NetLauncherでは、上記の理由と自宅で試す場合を考えて、構成ファイルで送信先SMTPサーバーを設定可能にしてありますので、必要に応じて設定してください。なお、イントラネット上のSMTPサーバーではなく、自宅でISPのSMTPサーバーを利用してみる場合には、送信元アドレスをPCの環境変数から取得するとサードパーティリレーと見なされて拒否される可能性があるので、同様に送信元の設定も行ってください。
Keyword(s):
References: