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

「MailKit」ライブラリを使ってメールを送信する方法をまとめます。

【検証環境】.NET Framework 4.7.2

利用準備

パッケージのインストール

Install-Package MailKit -Version 2.11.1

クラスの定義

public class Mail
{
    //送信者名
    public string NameFrom { get; set; }
    //宛先名
    public string NameTo { get; set; }
    //送信者アドレス
    public string AddressFrom { get; set; }
    //宛先アドレス
    public string AddressTo { get; set; }
    //件名
    public string Subject { get; set; }
    //本文
    public string BodyText { get; set; }
    //SMTPサーバ
    public string SmtpServer { get; set; }
    //ポート番号
    public int Port { get; set; }
    //サーバ認証ユーザ名
    public string AuthUserName { get; set; }
    //サーバ認証パスワード
    public string AuthPassWord { get; set; }

    public async void SendMail()
    {
        var message = new MimeKit.MimeMessage();

        // 送信者
        message.From.Add(new MimeKit.MailboxAddress(NameFrom, AddressFrom));

        // 宛先 
        message.To.Add(new MimeKit.MailboxAddress(NameTo, AddressTo));

        //CC
        //message.Cc.Add(new MimeKit.MailboxAddress(NameCC, AdressCC));

        // タイトル
        message.Subject = Subject;

        // 本文
        var textPart = new MimeKit.TextPart(MimeKit.Text.TextFormat.Text);
        textPart.Text = BodyText;
        message.Body = textPart;

        using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
        {
            try
            {
                await smtpClient.ConnectAsync(SmtpServer, Port); // 接続
                await smtpClient.AuthenticateAsync(AuthUserName, AuthPassWord); // 認証
                await smtpClient.SendAsync(message); // 送信
                await smtpClient.DisconnectAsync(true); // 切断
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + "メールの送信が失敗しました。");
            }
        }
    }
}

サンプルコード

static void Main(string[] args)
{
   var mail = new Mail()
    {
        NameFrom = "送信者名",
        AddressFrom = "[email protected]",
        NameTo = "宛先名",

        AddressTo = "[email protected]",
        Subject = "件名",
        BodyText = "本文",
        // ※下記は個人情報のため、適当な文字列にしています
        SmtpServer = "smtp.xxxxxxxxxx.jp",
        Port = 465,
        AuthUserName = "[email protected]",
        AuthPassWord = "xxxxxxxxxxxxxxxx",
    };
    mail.SendMail();
    Console.WriteLine("送信完了");
    Console.ReadLine();
}

Leave a Reply

Your email address will not be published. Required fields are marked *