ASP.NET Coreでメールを送信する

あすかです。

現在、自分のホームページのリニューアル作業の一環として怪しいシステムを作っていまして、
その怪しいシステムに運悪くも自分のメールアドレスを登録してしまった善良な市民たちに、怪しいメールを送信する必要が出てきました。

ASP.NET Coreでメールを送りたいんです。
C#でメール送信で検索をかけると、SmtpClientというものがまっさきに出てきますね。System.Net.Mail名前空間に含まれるやつ。
これ、ASP.NET Coreには含まれていないんです。
そこで、サードパーティのパッケージが必要になります。

ASP.NET Coreということは、WindowsでもLinuxでも同様に動く必要があるんですよね。
そんな都合のいいライブラリってあるんでしょうか。
ありました。


MailKitといいます。

www.nuget.org

私の探し方が悪かったのか、「これまで使っていたSmtpClient使うのやめてMailKit使ってね」と、マイクロソフト公式が直々に申し上げていますから仕方ありません。
使わせていただきましょう。

もちろんASP.NET Coreでも動きます。WindowsLinuxAmazon EC2)で動きました。
こちらの記事からコードとってきて、ちょいちょい変えてみます。

How to Send Emails in ASP.NET Core 1.0 - Steve Gordon's Blog

簡単なコードで、WindowsでもLinuxでもメールがちゃんと送信されました。やったね( ・`ω・´)
今までのSmtpClientと書き方は微妙に違いますが、慣れている方は簡単に移行できると思います。

Linuxのときはパーミッションに気をつけてくださいね。/home/[user name]ディレクトリにwriteパーミッションを与えてください。でないと、dotnet起動時に例外発生します。このフォルダに、メール関連の何かのログが記録されているようです。