Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

.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の環境変数から取得するとサードパーティリレーと見なされて拒否される可能性があるので、同様に送信元の設定も行ってください。

Last modified:2004/03/13 11:55:46
Keyword(s):
References: