.NET Core以降、そして .NET5 or 6時代になり、これまで Windows+Visual Studioの組み合わせで開発する定番のスタイルから脱却し、Linuxや maxOSでの開発や VSCode(Visual Studio Code)などエディタでも容易に開発できるようになった。
この記事では、VSCodeと .NET6でメールを送る方法を紹介する。
前提
- .NET6および、.NET CLIはインストールされているものとする。
インストールされていない場合は、コマンドでインストールされている .NETのバージョンを確認する方法 の記事でバージョンの確認方法と、.NET SDKのインストール方法を紹介しているので、参考にされたし。
新規プロジェクトの作成
.NET CLIを使い、コンソールアプリのプロジェクトを作る。.NET CLIでは dotnet
コマンドを通じて、プロジェクトの作成・ビルド・実行などの多くの操作ができる。
では、任意のディレクトリに移動後、下記コマンドで新規のコンソールアプリプロジェクトを作成する。
dotnet new console -n TestConsoleApp -o TestConsoleApp
標準の SmtpClientは非推奨
.NET Framework 4.x 時代には、標準クラスとしてSmtpClient
が用意されていたが、新しい .NET Coreからは非推奨となり、代わりに「MailKit」を利用することを公式で推奨している。
MailKitのインストール
「MailKit」は標準のクラスライブラリに含まれていないため、nugetで追加する。
下記コマンドで、作成したコンソールアプリに「MailKit」を追加する。
dotnet add package MailKit --version 3.4.1
メールを送ってみよう
簡単なテキストメールを送るサンプルコードを作ってみる。
// 送信するメッセージを作成する
var email = new MimeMessage();
email.From.Add(MailboxAddress.Parse("from@example.com"));
email.To.Add(MailboxAddress.Parse("to@example.com"));
email.Subject = "テストメールの件名";
email.Body = new TextPart(TextFormat.Text) { Text = "テストメールの本文" };
// メールを送る
using var smtp = new SmtpClient();
smtp.Connect("smtp.ethereal.email", 587, SecureSocketOptions.StartTls);
smtp.Authenticate("[USERNAME]", "[PASSWORD]");
smtp.Send(email);
smtp.Disconnect(true);
(余談)動作確認に便利なフェイクSMTPサーバー「Ethereal」
上のサンプルコードでは、STMPサーバーに smtp.ethereal.email
を指定している。
これは「Ethereal」というサービスが公開している SMTPで、いわゆるフェイク SMTPサーバーと呼ばれるものだ。この SMTPサーバーを使用して送信されたメールは、宛先(To)に指定したメールアドレスには送信されずに、「Ethereal」のサービス上でメールの送信履歴が確認できる。
つまり、宛先にメールが飛ばないので、開発時の動作確認などで、メールの送信を気軽にできる。
「Ethereal」の利用手順は簡単だ。
「https://ethereal.email/」にアクセスし「Create Ethereal Account」のボタンをクリック。
すると、STMP認証するためのユーザー名とパスワードが発行される。
あとは、表示されたユーザー名とパスワードを、メールを送信するプログラムの認証に設定すればOKである。
0 件のコメント:
コメントを投稿