【VB.NET】Gmailへメールを送信するには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、Gmailへメールを送信する方法をご紹介します。

Gmailへメールを送信する

前準備

MailKitのインストール

  • メールを送信する際に使用するSystem.Net.Mail.SmtpClientクラスは廃止されたので、代わりにMailKit.Net.Smtp.SmtpClientクラスを使用するため、MailKitをインストールする必要があります。
  • MailKitのインストール手順は、以下になります。

①「ツール」タブをクリック⇒②「NuGetパッケージマネージャー」を選択⇒③「ソリューションのNuGetパッケージの管理」を選択します。

 

①「参照」をクリック⇒②検索窓に「MailKit」と入力し、検索⇒③検索結果から「MailKit」を選択⇒④「プロジェクト」をチェック⇒⑤「インストール」をクリックします。

 

「OK」をクリックすると、インストールが開始されます。

 

Gmailのセキュリティの設定

  • Gmailのセキュリティの設定をしないと以下のような認証エラーが発生します。
    「535: 5.7.8 Username and Password not accepted」
  • エラーにならないようにするには、「2段階認証プロセスを有効にする」か、「安全性の低いアプリのアクセスを有効にする」必要があります。
  • それぞれの手順は以下になります。

2段階認証プロセスを有効にする場合

①Gmailの右上のアイコンをクリック⇒②「Googleアカウントを管理」をクリックします。

「セキュリティ」をクリックします。

 

「2段階認証プロセス」をクリックします。

 

「使ってみる」をクリックします。

 

本人確認をしたのち「有効にする」をクリックします。

 

続けて、「アプリパスワード」を設定します。

「アプリパスワード」をクリックします。

 

①アプリ「メール」、デバイス「Windowsパソコン」を選択⇒②「生成」をクリックします。

 

黄色の部分にパスワードが表示されるので、パスワードを控える(プログラムの中で使用します。)⇒「完了」をクリックします。

 

アプリパスワードが設定されます。

 

安全性の低いアプリのアクセスを有効にする場合

①Gmailの右上のアイコンをクリック⇒②「Googleアカウントを管理」をクリックします。

「セキュリティ」をクリックします。

 

「アクセスを有効にする」をクリックします。

 

有効にします。

 

メールを送信するための処理の流れ

おおまかな流れ

Step.0
非同期処理の宣言

Step.1
宛先、タイトル、本文の設定

Step.2
SMTPサーバに接続

Step.3
SMTPサーバのユーザー認証

Step.4
メール送信

Step.5
SMTPサーバの切断

詳細

Step.0 非同期処理の宣言

  • メール送信する際、非同期処理を行うため、メソッドを作成する際に、Async修飾子を指定します。

Async Sub メソッド名

Step.1 宛先、タイトル、本文の設定

  • 宛先、タイトルを設定するには、MimeKit名前空間のMimeMessageクラスを使います。

  • Fromを設定する書式は以下になります。

MimeKit.MimeMessage.From.Add(New MimeKit.MailboxAddress(Fromの名前, Fromのメールアドレス)

  • Toを設定する書式は以下になります。

MimeKit.MimeMessage.To.Add(New MimeKit.MailboxAddress(Toの名前, Toのメールアドレス)

  • 件名を設定する書式は以下になります。

MimeKit.MimeMessage.Subject = 文字列

  • 本文を設定するには、MimeKit名前空間のTextPartクラスを使います。

  • 本文のテキスト形式を設定する書式は以下になります。

MimeKit.TextPart(MimeKit.Text.TextFormat.テキスト形式)

指定できるテキスト形式
メンバ名 内容
Plain プレーンテキスト形式
Text プレーンテキスト形式のエイリアス
Flowed
フローテキスト形式
Html HTMLテキスト形式
Enriched エンリッチテキスト形式
RichText リッチテキスト形式

  • 本文の文字列を設定する書式は以下になります。

MimeKit.textPart.Text = 文字列

  • 本文のテキスト形式と文字列の設定を反映する書式は以下になります。

MimeKit.MimeMessage.Body = textPart

Step.2 SMTPサーバに接続

  • SMTPサーバに接続する書式は以下になります。

 Await MailKit.Net.Smtp.SmtpClient.ConnectAsync(ホスト名, ポート番号)

  • Gmailのホスト名は「smtp.gmail.com」、ポート番号は「587」です。

Step.3 SMTPサーバのユーザー認証

  • SMTPサーバのユーザー認証の書式は以下になります。

 Await MailKit.Net.Smtp.SmtpClient.AuthenticateAsync(Fromのメールアドレス, 上記で取得したアプリパスワード)

Step.4 メール送信

  • メールを送信する書式は以下になります。

Await MailKit.Net.Smtp.SmtpClient.SendAsync(MimeKit.MimeMessage)

Step.5 SMTPサーバの切断

  • SMTPサーバの切断をする書式は以下になります。

Await client.DisconnectAsync(True)

サンプルプログラム

2 「Gmailに送信」ボタンクリック時に以下処理を行う。(Async修飾子を設定)
13 MimeKit.MimeMessageのインスタンス化。
15 Fromプロパティの設定。
16 Toプロパティの設定。
17 Subject(件名)プロパティの設定。
19 本文のテキスト形式をプレーンに設定。
20 本文の内容を、Textプロパティに設定。
21 19、20行目で設定した内容をBodyプロパティに設定。
23 MailKit.Net.Smtp.SmtpClientのインスタンス化。
25 GmailのSMTPサーバに接続。
26 SMTPサーバのユーザー認証。
27 Gmailへ送信。
28 SMTPサーバの切断。
32 処理が完了したら、正常終了のメッセージをラベルに表示する。
34 処理の実行中にエラーが発生した場合、
36 エラー内容を取得し、ラベルに表示する。

関連記事

メールの宛先にCcを追加して送信する

【VB.NET】メールの宛先にCcを追加して送信するには?

メールにファイルを添付して送信する

【VB.NET】メールにファイルを添付して送信するには?

Usingステートメント

【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する

構造化例外処理

【VB.NET】構造化例外処理とは?

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら