ASP.NET Coreでメール送信機能を実装する

公開日:2018-12-18
最終更新:2018-12-18

ASP.NET Coreでメール送信機能

長らくSystem.Net.Mail.SmtpClientクラスが使われてきたものの、現在は非推奨となっている。
新たに公式で推奨されているMailKitを使用する。
導入方法はVisualStudioならNuGetパッケージ管理画面から検索してインストールするだけ。
以下は簡易的なメール送信メソッド

public async void SendMailAsync(string to, string from, string subject, string text)  
{  
    var message = new MimeKit.MimeMessage();  
    // 宛先情報  
    message.From.Add(new MimeKit.MailboxAddress("<宛名>", from));  
    // 送り元情報  
    message.To.Add(new MimeKit.MailboxAddress("<送信者名>", to);  
    // 表題  
    message.Subject = subject;  
    // 内容  
    var textPart = new MimeKit.TextPart(MimeKit.Text.TextFormat.Plain);  
    textPart.Text = text;  
    message.Body = textPart;  

    using (var client = new MailKit.Net.Smtp.SmtpClient())  
    {  
        try  
        {  
            // SMTPサーバに接続  
            await client.ConnectAsync(<smtpのhost>,<smtpのport>);  
            Debug.WriteLine("接続完了");  

            // SMTPサーバ認証(あれば)  
            await client.AuthenticateAsync(<user>, <pass>);  

            // 送信  
            await client.SendAsync(message);  

            // 切断  
            await client.DisconnectAsync(true);  

        }  
        catch(Exception e)  
        {  
            Debug.WriteLine("{0} Exception caught.", e);  
        }  
    }  
}  

なぜSmtpClientクラスが非推奨になったかも含めてここが詳しい

送信テスト方法

IIS6以降、IISで簡易的にSMTPサーバーを立ててメール送信のテストを行うことができなくなった。
SMTPサーバーを別途用意するのは大変なので、smtp4devを使う。

Githubから最新リリースをダウンロードし、任意のディレクトリに解凍する。
内包されているRnwood.Smtp4dev.exeを起動するだけ。
色々警告がでるが無視してOK。
基本はlocalhostの5000番ポートで待ち受けているが、ポートを変えたいならappsettings.jsonの設定を変更する。

先ほどのメール送信メソッド内のsmtpのhostを"localhost",portを25に設定する。
認証部分はいらないのでコメントアウト。

上記過程を踏んだうえでメソッドを使用すると、smtp4devがメールをキャッチして、宛先、送信元、表題、内容を見ることができる。
実際の宛先には送信されない。

UIの情報等、少し古いがここを参考にした。

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
@showyleeの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする