C#でメールを送信する場合、SMTPClientが使用されていましたが、.Net Framwork 4.5からは「MailKit」というライブラリを使用することが推奨されています。
この記事ではWPFのプロジェクトに「MailKit」ライブラリをインストールし、メールを送信する方法を紹介します。
WPFプロジェクトの作成方法は下記記事をご参照ください。
使用した環境
- Visual Studio Community 2019
- MailKit 2.9.0
NuGetでMailKitをインストールする
Visual Studio のメニューから プロジェクト > NuGet パッケージの管理 をクリックします。
「NuGet パッケージマネージャー」タブが開くので、「参照」をクリックし、検索ボックスに「MailKit」と入力します。すると、一番上に作成者「Jeffrey Stedfast」の「MailKit」が出てくるので、選択し「インストール」をクリックします。
「インストール」をクリックすると、ソリューションにインストールされるパッケージ一覧が表示されるので「OK」をクリックします。
「MailKit」のインストールが完了すると下記のように「インストール済み」と表示されます。
以上でMailKitを使用する準備が完了しました。
MailKitの使い方
サンプルとして以下関数を実装しました。
// メール送信関数 :引数(宛先アドレス, 件名, 本文) private void SendMail(string strToAddr, string strSubject, string strMessage) { using (var smtp = new MailKit.Net.Smtp.SmtpClient()) { // メールサーバ接続情報 string strHost = "chiritsumo-blog.com"; int nPort = 587; MailKit.Security.SecureSocketOptions mailSecOpt = MailKit.Security.SecureSocketOptions.None; string strUsrId = "user"; string strUsrPass = "password"; string strUsrAddr = "user@chiritsumo-blog.com"; Console.WriteLine(strToAddr + "にメール送信"); // SMTPサーバに接続 smtp.Connect(strHost, nPort, mailSecOpt); // 認証が不要な場合は、以下をコメントアウト smtp.Authenticate(strUsrId, strUsrPass); // 送信するメールを作成 MimeKit.MimeMessage mail = new MimeKit.MimeMessage(); MimeKit.BodyBuilder builder = new MimeKit.BodyBuilder(); mail.From.Add(new MimeKit.MailboxAddress("", strUsrAddr)); mail.To.Add(new MimeKit.MailboxAddress("", strToAddr)); mail.Subject = strSubject; builder.TextBody = strMessage; mail.Body = builder.ToMessageBody(); // メールを送信 smtp.Send(mail); // SMTPサーバから切断 smtp.Disconnect(true); Console.WriteLine("メール送信完了"); } }
7~12行目にSMTPサーバーの情報や送信アカウントを設定します。
行数 | 変数名 | 概要 |
---|---|---|
7 | strHost | メールサーバーのホスト名 |
8 | nPort | SMTPポート番号(25 or 587 or 465) |
9 | mailSecOpt | SMTPセキュリティオプションの種類 |
10 | strUsrId | 送信アカウントのユーザーID |
11 | strUsrPass | 送信アカウントのパスワード |
12 | strUsrAddr | 送信アカウントのアドレス |
SMTPポート番号やセキュリティオプションは使用してるメールサーバーの設定により異なります。私が使用しているメールサーバーの場合、ポート番号は587・セキュリティオプションはNoneで送信できることを確認しました。
また、上記の「MailSend」関数は以下のように記述することで使用できます。
SendMail("example@gmail.com", "件名", "本文");
引数は順番に「宛先アドレス」「件名」「本文」の文字列を指定しています。
コメント