Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

The Backyard - SendMailWithDotNet Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

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