【VB.NET】System.Net.Mail の SmtpClient は使うな! MailKit を使え!

ひさしぶりにメール送信を行うツールを作ろうと思ったんデス。

過去に作ったメール送信のプログラムをほじくり返してコードを流用しようかな~とも思ったけれど・・・ほら、プログラミングの世界は変化が激しいからね! より良い方法が次々に現れてやり方が変わったりする可能性があるから。念のためメール送信の方法についてネット検索してみたわけです。以前と違う新しい方法が出てきたりしてないでしょうね~と・・・。

そしたらその予感が的中。株やっても宝くじ買っても、みごとにハズレまくりな自分なのに、変なところで的中運を使っちゃうんだよなー。

無駄話はこのへんにして本題へ!

.NET 4.5 以降なら System.Net.Mail.SmtpClient は使うな! MailKit を使え!

現在、Microsoft の System.Net.Mail.SmtpClient の記事を開くと、次のようにハッキリと書かれています。

Warning
This API is now obsolete.

警告
これは古い(廃止予定の)API です。

 

we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead

かわりに MailKit と MimeKit の使用を強くお勧めします

 

Important
We don't recommend that you use the SmtpClient class for new development. For more information, see SmtpClient shouldn't be used on GitHub.

重要
新しい開発で SmtpClient の使用はおすすめしません。詳細については GitHub の「SmtpClient を使用すべきではない」をご覧ください。

 

メールを送信するために .NET Framework 2.0(2005/11~)から長い間使われてきた System.Net.Mail.SmtpClient ですが、2017 年の 4 月頃には SmtpClient クラスのドキュメントに obsolete(古い、廃止予定)と書かれていたようです(原文)。設計が貧弱で問題があるんだとか。

MailKit が .NET Framework 4.5 から対応しているらしいので、.NET Framework 4.5 以上を使用するアプリならば、MailKit を使うようにしましょう。

MailKit のインストール

NuGet からインストールできます。NuGet から MailKit をインストールすると MimeKit もくっついてくるようです。

Visual Studio の[ツール]>[NuGet パッケージ マネージャー]>[ソリューションの NuGet パッケージの管理]を選択します。

左上の[参照]をクリックして、検索ボックスに「MailKit」と入力。右側でインストール対象のプロジェクトにチェックを入れて、右下の[インストール]をクリック。

下記のような確認ダイアログが表示されるので、[OK]をクリックするとインストールが開始します。

インストール状態を示す出力ウィンドウはこんな感じ。

MEMO

MailKit をインストールすると、通常は MimeKit も一緒にインストールされるはずです。

 

しかし場合によっては一緒にインストールされないことがあるので、そのときは前述の手順で個別にインストールする必要があります。

たとえば、私が MailKit をインストールしたプロジェクトファイル一式を別のコンピュータにコピーしたとき、MailKit の再インストールが必要になったのですが、再インストールしても MimeKit が一緒にインストールされなかったので(コードに発生したエラーで気付いた)、別途インストールしなければいけませんでした。

MailKit によるメール送信のコード

下記のような感じです。難しくないですね。関数の頭に Async を忘れないように。

Yahoo と XSERVER の SMTP サーバーに送信して動作確認しましたが、問題なく動作しました。

 

参考にした記事:電子メールを送信するには?(MailKit編)[.NET 4.5、C#/VB]

 

コメントの投稿

avatar
  購読する  
通知を受け取る対象