【C#】メールを送信する方法

C#でメールを送信する場合、SMTPClientが使用されていましたが、.Net Framwork 4.5からは「MailKit」というライブラリを使用することが推奨されています。
この記事ではWPFのプロジェクトに「MailKit」ライブラリをインストールし、メールを送信する方法を紹介します。

WPFプロジェクトの作成方法は下記記事をご参照ください。

使用した環境

  • Visual Studio Community 2019
  • MailKit 2.9.0

NuGetでMailKitをインストールする

Visual Studio のメニューから プロジェクト > NuGet パッケージの管理 をクリックします。

Visual Studio NuGet パッケージマネージャを開く

「NuGet パッケージマネージャー」タブが開くので、「参照」をクリックし、検索ボックスに「MailKit」と入力します。すると、一番上に作成者「Jeffrey Stedfast」の「MailKit」が出てくるので、選択し「インストール」をクリックします。

Visual Studio MailKit ライブラリのインストール

「インストール」をクリックすると、ソリューションにインストールされるパッケージ一覧が表示されるので「OK」をクリックします。

Visual Studio MailKit ライブラリのインストールの変更のプレビュー

「MailKit」のインストールが完了すると下記のように「インストール済み」と表示されます。

Visual Studio 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サーバーの情報や送信アカウントを設定します。

行数変数名概要
7strHostメールサーバーのホスト名
8nPortSMTPポート番号(25 or 587 or 465)
9mailSecOptSMTPセキュリティオプションの種類
10strUsrId送信アカウントのユーザーID
11strUsrPass送信アカウントのパスワード
12strUsrAddr送信アカウントのアドレス

SMTPポート番号やセキュリティオプションは使用してるメールサーバーの設定により異なります。私が使用しているメールサーバーの場合、ポート番号は587・セキュリティオプションはNoneで送信できることを確認しました。

また、上記の「MailSend」関数は以下のように記述することで使用できます。

SendMail("example@gmail.com", "件名", "本文");

引数は順番に「宛先アドレス」「件名」「本文」の文字列を指定しています。


参考:
https://github.com/jstedfast/MailKit

コメント

タイトルとURLをコピーしました