LoginSignup
2
5

More than 1 year has passed since last update.

PowerShellでgmailを送信する方法

Posted at

初めに

業務でバッチ処理結果を自身のメールアドレスに送信するスクリプトを作成したので紹介します。

準備するもの

  • powershell v2.0以上の動作する環境
  • 送信元となるgmailアドレス

大まかな流れ

  1. 送信元gmailアドレスのアカウント管理画面で、以下二つの設定を実施する
    a. 2段階認証プロセスをオンにする
    b. アプリパスワードを作成する
  2. 上記パスワードを利用して、PowerShellスクリプトを作成する。
  3. PowerShellを実行する

1.Googleアカウントの設定

  1. ご自身のGoogleアカウント画面のメニューから「セキュリティ」を選択します
  2. 「Googleへのログイン」の項目にある「2段階認証プロセス」をクリックします
    image.png
  3. ガイドに沿って設定を進めます。認証方法には依存しませんので、ご自身が管理しやすい認証方法を選択してください。
  4. 設定が完了すると、以下のように2段階認証がオンとなります。
    image.png
  5. 次に「アプリパスワード」をクリックします
    image.png
  6. アプリパスワードで、2段階認証プロセスに対応していないアプリからgmailを利用できるようになります。アプリを選択する項目で「その他(名前を入力)」を選択し、自身が後日理解しやすい名前を付けます。
  7. 「生成」ボタンを押すと、アプリパスワードが生成されます。このパスワードは後で利用します
    image.png

2. PowerShellスクリプトの作成

まずは実際に動作実績のあるコードを紹介します。使いやすいように関数化していますが本質的には不要です。

function SendMail($subject, $body) {
    $EmailFrom = "[送信元gmailアドレス]"
    $EmailTo = @("送信先メールアドレス①", "送信先メールアドレス②")
    $Subject = $subject
    $Body = $body
    $SMTPServer = "smtp.gmail.com" 
    $SMTPPort = 587
    $password = ConvertTo-SecureString "[アプリパスワード]" -AsPlainText -Force
    $username = "[送信元gmailアドレスのユーザー名]"
    $credential = New-Object System.Management.Automation.PSCredential($username, $password)

    Send-MailMessage `
        -From $EmailFrom `
        -to $EmailTo `
        -Subject $Subject `
        -Body $Body `
        -SmtpServer $SMTPServer `
        -port $SMTPPort `
        -UseSsl -Credential $credential `
        -DeliveryNotificationOption None `
        -Encoding UTF8 `
        -ErrorAction Stop
}

$subject = "メール送信テスト"
$body = "こんにちは"
# SendMail関数の実行
SendMail $subject $body

2-1.主要変数の解説

  • $EmailFromには送信元アドレスとして、今回使用しているgmailを指定します
  • $EmailToには送信先アドレスを指定します。複数指定する場合は、配列としてアドレスを入力します。
  • $Subjectはメールタイトル、$Bodyは本文です。内容を直接変数に代入しても良いですが、今回は使いやすいようそれぞれsubjectとbodyという引数から内容を引き継がせています
  • $passwordには先程生成したアプリパスワードを記入します
  • $usernameには送信元gmailアカウントのユーザー名を指定します。大体の場合、example@gmail.comの"example"部分になることが多いです

3.PowerShellの実行

例えばps1ファイルとして保存し、PowerShellを実行します。正常に処理されると、以下のようにメールが受信されます。

image.png

2
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5