初めに
業務でバッチ処理結果を自身のメールアドレスに送信するスクリプトを作成したので紹介します。
準備するもの
- powershell v2.0以上の動作する環境
- 送信元となるgmailアドレス
大まかな流れ
- 送信元gmailアドレスのアカウント管理画面で、以下二つの設定を実施する
a. 2段階認証プロセスをオンにする
b. アプリパスワードを作成する - 上記パスワードを利用して、PowerShellスクリプトを作成する。
- PowerShellを実行する
1.Googleアカウントの設定
- ご自身のGoogleアカウント画面のメニューから「セキュリティ」を選択します
- 「Googleへのログイン」の項目にある「2段階認証プロセス」をクリックします
- ガイドに沿って設定を進めます。認証方法には依存しませんので、ご自身が管理しやすい認証方法を選択してください。
- 設定が完了すると、以下のように2段階認証がオンとなります。
- 次に「アプリパスワード」をクリックします
- アプリパスワードで、2段階認証プロセスに対応していないアプリからgmailを利用できるようになります。アプリを選択する項目で「その他(名前を入力)」を選択し、自身が後日理解しやすい名前を付けます。
- 「生成」ボタンを押すと、アプリパスワードが生成されます。このパスワードは後で利用します
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を指定します
- 例: $EmailFrom = "example@gmail.com"
- $EmailToには送信先アドレスを指定します。複数指定する場合は、配列としてアドレスを入力します。
- 例:$EmailTo = "example@mail.com"
- 例:$EmailTo = @("example1@mail.com", "example2@mail.co.jp")
- $Subjectはメールタイトル、$Bodyは本文です。内容を直接変数に代入しても良いですが、今回は使いやすいようそれぞれsubjectとbodyという引数から内容を引き継がせています
- $passwordには先程生成したアプリパスワードを記入します
- $usernameには送信元gmailアカウントのユーザー名を指定します。大体の場合、example@gmail.comの"example"部分になることが多いです
3.PowerShellの実行
例えばps1ファイルとして保存し、PowerShellを実行します。正常に処理されると、以下のようにメールが受信されます。