SSブログ

C#.NETでメールを送信する方法 [プログラミング]

C#.NETでメールを送信する方法について説明する。

ここで説明するメール送信はSmtpClientクラス(System.Net.Mail名前空間)を利用する。

簡単な処理の流れは以下の通り。

1.SmtpClientクラスのインスタンスの生成
2.SMTPサーバ、送信ポートの設定
3.差出人の資格情報の設定
4.メールの送信
5.各種インスタンスの破棄

では、その詳細を説明していこう。

1.SmtpClientクラスのインスタンスの生成

ここではSmtpClientクラスのほか、メールの送信内容の設定も行う。
①SmtpClientクラスのインスタンスの生成
 初期化の方法はいくつかあるが、取り敢えずここではSMTPサーバも送信ポートも指定せずに初期化する。
②MailMessageクラスのインスタンスの生成
 送信するメールの宛先、差出人、件名、本文等のメッセージを作成するためにMailMessageクラス(System.Net.Mail名前空間)のインスタンスを生成する。
 必要最低限の情報(宛先のメールアドレス文字列、差出人のメールアドレス文字列、件名となる文字列、本文となる文字列)で初期化を行う。
 ※今回は特に設定しないが、MailMessageクラスのインスタンスを生成した後、CC、BCCおよび優先度等の各プロパティを設定することも可能である。


2.SMTPサーバ、送信ポートの設定

SMTPサーバ、送信ポート等メール送信にするための設定手順は以下の通り。
①SMTPサーバの設定
 SmtpClientクラスのインスタンスのHostプロパティにSMTPサーバのホスト名を設定する。
②送信ポートの設定
 SmtpClientクラスのインスタンスのPortプロパティに送信ポート番号を設定する。
 規定値が25なので、変更がなければ設定しなくても問題ない。
③送信メッセージの処理方法の設定
 SmtpClientクラスのインスタンスのDeliveryMethodプロパティにSmtpDeliveryMethod列挙体のNetworkの値を設定する。
 この値を設定することでメールがネットワーク経由でSMTPサーバに送信される。


3.差出人の資格情報の設定

メールを送信するための差出人の認証に使用する資格情報の設定手順は以下の通り。
①資格情報の設定
 SmtpClientクラスのインスタンスのCredentialsプロパティにNetworkCredentialクラス(System.Net.Mail名前空間)のインスタンスを設定する。
 NetworkCredentialクラスのインスタンスはユーザ名、パスワードで初期化する。


4.メールの送信

ここまでくれば、後はメールを送信するだけである。
SmtpClientクラスのインスタンスのSendメソッドにMailMessageクラスのインスタンスを指定して実行する。
※今回はメール送信結果のチェックは行っていないが、送信結果をチェックする場合はTry...Catchステートメントを使用してSmtpExceptionクラスのStatusCodeプロパティを確認すれば良い。


5.各種インスタンスの破棄

①MailMessageクラスのインスタンスを破棄する。
②SmtpClientクラスのインスタンスを破棄する。


上記の手順でSMTPサーバを使用したメールの送信が行える。
以下は、上記メール送信手順のサンプルコード(抜粋)である。
フォームには以下のテキストボックスとボタンが配置されているものとする。
 ・差出人アドレス
 ・宛先アドレス
 ・件名
 ・本文
 ・送信ボタン

------------------------------------------------------------

        private void btnSend_Click(object sender, EventArgs e)
        {
            //送信ボタン押下時の処理
            string FromAddress = txtFrom.Text;
            string ToAddress = txtTo.Text;
            string Subject = txtSubject.Text;
            string Body = txtBody.Text;
            System.Net.Mail.MailMessage Msg = new System.Net.Mail.MailMessage(FromAddress, ToAddress, Subject, Body);
            System.Net.Mail.SmtpClient Sc=new System.Net.Mail.SmtpClient();
            try
            {
                Sc.Host = "smtp.xxxxxxxx.ne.jp";
                Sc.Port = 25;
                Sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                Sc.Credentials = new System.Net.NetworkCredential("username", "password");
                var result = MessageBox.Show(ToAddress + "にメールを送信します。" + Environment.NewLine + "よろしいですか。",
                    this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.No)
                {
                    MessageBox.Show("メールの送信を中止しました。", this.Text,MessageBoxButtons.OK,MessageBoxIcon.Stop);
                    return;
                }
                Sc.Send(Msg);
                MessageBox.Show("メールの送信が完了しました。", this.Text,MessageBoxButtons.OK,MessageBoxIcon.Information);
                txtBody.Text = ""; txtSubject.Text = "";
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text,MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
            finally
            {
                Msg.Dispose();
                Sc.Dispose();
            }
        }

------------------------------------------------------------


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。