前回、設定ファイル (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)