えむじぃのアプリ開発

えむじぃのアプリ開発

元大手IT企業SE、現ベンチャー企業CTOのブログです。

【C#】MailKitを使用してメール送信

今回はMailKitを使用してメール送信する方法をこの記事で説明します。

この記事のポイント・MailKitの使い方

MailKitのインストール

Visual StudioのNuGetパッケージ管理画面で「MailKit」を検索してインストールします。

MailKitの使用

MailKitの使用するには以下のように設定します。

using MailKit.Net.Smtp;
using MimeKit;
using System;
using static System.Console;

namespace Sample.Models
{
    public class Mail
    {
        public static bool sendMail(string toAddress, string password, ref string errmsg)
        {

            var message = new MimeMessage();
            message.From.Add(new MailboxAddress(Constants.EMAIL_FROM_NAME, Constants.EMAIL_FROM_ADDRESS)); // 送信元MailAddress
            message.To.Add(new MailboxAddress(Constants.EMAIL_TO_NAME, toAddress));                        // 送信先MailAddress
            message.Subject = Constants.EMAIL_SUBJECT;                                                     // Mail Title

            message.Body = new TextPart("plain")
            {
                Text = Constants.EMAIL_TEXT.Replace("{1}", password).Replace("{2}", Constants.PERIO_PERIO_URL) // Mail本文
            };

            using (var client = new SmtpClient())
            {
                try
                { 
                    // Set SMTP(Server,Port)
                    client.Connect(Constants.EMAIL_SMTP_SERVER, Constants.EMAIL_PORT_NO, MailKit.Security.SecureSocketOptions.Auto);
                    WriteLine("接続完了");
                    
                    // Set UserId,Password
                    client.Authenticate(Constants.EMAIL_USER_ID, Constants.EMAIL_PASSWORD);
                    WriteLine("認証完了");
                    
                    client.Send(message);
                    WriteLine("送信完了");
                    
                    client.Disconnect(true);
                    WriteLine("切断");

                    return true;
                }
                catch (Exception ex) 
                {
                    WriteLine(ex.ToString());
                    errmsg = ex.ToString();
                    return false;
                }
            }

         }

    }

}

 

<