メールを送信する

前回、設定ファイル (web.config) から値を読み取る方法を学びました。

で、今回はメールサーバーの情報(サーバー、アカウント、パスワード、等)を web.config から取得するつもりだったのですが、それは止めておきます。

実験後、後片付けしない人がきっと出てくる、そしてメール送信に悪用されると思うので、今回のサンプルでは都度サーバー、アカウント、パスワードを入力することにします。

 

以下のコードをエディタに入力してください。あるいは このページ の末尾からダウンロードしてください。

   1:  <%@ Import Namespace="System.Net.Mail" %>
   2:  <%@ Import Namespace="System.Net" %>
   3:   
   4:  <script language="C#" runat="server">
   5:      void btn1_Click(object sender, EventArgs ev)
   6:      {
   7:          MailMessage mail = new MailMessage();
   8:          mail.From = new MailAddress(txtFrom.Text);
   9:          mail.To.Add(txtTo.Text);
  10:          mail.Subject = txtSubject.Text;
  11:          mail.Body = txtBody.Text;
  12:   
  13:          SmtpClient smtp = new SmtpClient(txtServer.Text, int.Parse(txtPort.Text));
  14:          smtp.EnableSsl = chkSSL.Checked;
  15:          smtp.Credentials = new NetworkCredential(txtUser.Text, txtPassword.Text);
  16:          smtp.Send(mail);
  17:      }
  18:  </script>
  19:  <html xmlns="http://www.w3.org/1999/xhtml">
  20:  <head>
  21:      <title>System.Net.Mail のテスト</title>
  22:  </head>
  23:  <body>
  24:      <p>System.Net.Mail のテスト</p>
  25:      <p>MailMessage, SmtpClient, NetworkCredential</p>
  26:      <form runat="server" id="frm1">
  27:          server: <asp:TextBox runat="server" id="txtServer" /><br />
  28:          port: <asp:TextBox runat="server" id="txtPort" text="25" /><br />
  29:          user: <asp:TextBox runat="server" ID="txtUser" /><br />
  30:          password: <asp:TextBox runat="server" ID="txtPassword" /><br />
  31:          <asp:CheckBox runat="server" ID="chkSSL" Text="SSL" /><br />
  32:          <br />
  33:          from: <asp:TextBox runat="server" id="txtFrom" /><br />
  34:          to: <asp:TextBox runat="server" id="txtTo" /><br />
  35:          subject: <asp:TextBox runat="server" id="txtSubject" /><br />
  36:          <asp:TextBox runat="server" id="txtBody" TextMode="MultiLine" width="640px" height="240px" /><br />
  37:          <br />
  38:          <asp:Button runat="server" id="btn1" text="送信" onclick="btn1_Click" />
  39:      </form>
  40:  </body>
  41:  </html>

このサンプルを動かしたらどうなるかは、こちら をご覧ください。

コードの説明に入ります。

1 ~ 2 行目は、System.Net.Mail 名前空間の部品を使いますよ、System.Net 名前空間の部品を使いますよ、という宣言 (?) です。

27 ~ 38 行目は各種情報(メール サーバー、アカウント、パスワード、等)を入力してもらためのフォームを作るコードです。

重要なのは 7 ~ 16 行目。

7 ~ 11 行目で MailMessage を組み立て、13 ~ 16 行目でメールを送信しています。

8 行目、送信者のメアドを指定。

9 行目、宛先のメアドを指定。

10 行目、メールの題名を指定。

11 行目、メールの本文を指定。

13 行目、メール サーバーとポート番号を指定。

14 行目、SSL を使うかどうかを指定。

15 行目、メール サーバーを利用する際のアカウントとパスワードを指定。

16 行目、メールを送信。

 

参考になるページ

SmtpClient クラス (System.Net.Mail)

MailMessage クラス (System.Net.Mail)

NetworkCredential クラス (System.Net)

@ Import