PowerShellを使ってGmailを送る方法

前回、Windows PowerShell を使ってメールを送信する方法を記載しましたが、今回はPowerShellを使ってGmailを送る方法を記載します。 結論としては以下ように Send-MailMessage コマンドを正しく実行すれば、Gmailからメールを送信できます。
※参考:「PowerShell」の開き方

PS C:\Users\administrator> Send-MailMessage -To “yamada@gmail.com” -From “suzuki@gmail.com” -SmtpServer “smtp.gmail.com” -Credential “suzuki@gmail.com” -Subject “明日の予定” -Encoding “UTF8” -UseSsl -Port “587”

まず、Gmailに限らずメールを送信するには以下の情報が必要ですので、ここから取り掛かりましょう。
・メール送信サーバ(SMTPサーバ)のホスト名、またはIPアドレス
・メール送信サーバがメールクライアントからの要求を受け付けるポート番号
・メール送信サーバの認証情報(ユーザ名とパスワード)

メール送信サーバのホスト名

Gmailのメール送信サーバのFQDNは smtp.gmail.comです。これはGoogleが
公開
していますので、Google検索で見つけることができる情報です。IPアドレスは以下のようにnslookupコマンドで確認できますが、IPアドレスは予告なく変更されるものなので、通常は FQDN を使います。

C:\Users\Administrator>nslookup
> set type=A
>smtp.gmail.com

権限のない回答:
名前: gmail-smtp-msa.l.google.com
Addresses: 74.125.203.109
74.125.203.108
Aliases: smtp.gmail.com

メール送信サーバがメールを受け付けるポート番号

これもGoogleが公開しています。TLSはSSLの後継のプロトコルなので、利用するポートは587を指定すれば良いでしょう。
・SSL のポート: 465
・TLS / STARTTLS のポート: 587

メール送信サーバの認証情報

・ユーザ名は自分のgmailアカウント(Gmailアドレス)です
・パスワードは2段階認証を有効にしているかどうかで異なります。

2段階認証を有効にしている場合

Googleのパスワードは使えません。ここからapp passwordを発行して、これを利用する必要があります。

2段階認証を有効にしていない場合

Googleのパスワードが使えます。ただし、Googleのアカウントで、「安全性の低いアプリからのアカウントへのアクセスを許可する」必要があります。

Gmailからメールを送る時に躓くところが上記で説明した認証方法です。認証がうまくいかない場合は以下のようなエラーメッセージが表示されます。

Send-MailMessage : SMTP サーバーにセキュリティで保護された接続が必要であるか、またはクライアントが認証されていません。 サーバーの応答:5.5.1 Authentication Required. Learn more at
Send-MailMessage -To “yamada@gmail.com” -From “suzuki@gma …
~~~~~~~~~~~~~~~~~
+CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage]、SmtpException
+FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

以上、ここまでやればPowerShellからメールを送信できるはずです。

PowerShell に関しては下記の本をお勧めしておきます。プログラミング初心者向けに丁寧に解説されています。2015年に出版された本ですが、PowerShell の基本的なコマンドはかわらないので何の問題もありません。

コメント

大変申し訳ございません。当サイトは広告収入で運営しております。

当サイトを閲覧を継続するには広告ブロッカーをオフにするか、当サイトをホワイトリストに追加したうえで、再読み込みをしてください。