概要
日時jobで作成されるファイルを毎日特定の宛先にメールで添付して送るJobつくりたい。
そんな要件あったりしませんか?
…。
あったりしませんか?
ということで、Powershellを使って添付ファイル付きのメールを送るスクリプトを作成しました。
もっといいやり方あると思います、処理がスムーズに行くとかね。
でもいいの、もっとPowershell使いこなせるようになったらいい方法探してみる!
ということで優しいまなざしでご覧くださいませ。
簡易構成とメール送信の流れ
Powershellスクリプト実行用サーバとしてEC2と、AmazonSESをSMTPサーバとして利用し
メールを外部へ送信する構成というものになります。
.ps1について
今回はSMTPサーバとしてAWS上のSESを利用しています。
スクリプト本体に記載のある以下の変数についてはそれぞれの構成にあったSMTPサーバ等をご指定ください。
変数
$SMTP_server
$Port
$User
$Password
sendmail.ps1
# メールを指定する変数
$From ="送信元サーバに表示したいメールアドレス"
$To = "メール送信先"
$Cc = "メール送信先CC"
$Subject ="任意の件名"
$Body ="本文"
# 添付ファイルを指定する変数
$File_path = "添付したいファイルが存在するパスを記述"
$File_name = "添付したいファイルを記述"
$File = $File_path +"\$File_name"
# SMTPサーバを指定する変数
$SMTP_server ="email-smtp.ap-northeast-1.amazonaws.com"
$Port ="利用するポートを記述"
$User ="Amazon SESユーザー名記述"
$Password ="Amazon SESパスワード"
$SMTP_client =New-Object Net.Mail.SmtpClient($SMTP_server,$Port)
$SMTP_client.EnableSsl =$true
$SMTP_client.Credentials =New-Object Net.NetworkCredential($User,$Password)
# メールメッセージの作成
$Mail_massage=New-Object Net.Mail.MailMessage($From,$To,$Subject,$Body)
$Mail_massage.Cc.Add($Cc)
# ファイルから添付ファイルを作成
$Attachment=New-Object Net.Mail.Attachment($File)
# メールメッセージに添付
$Mail_massage.Attachments.Add($Attachment)
# メールメッセージを送信
$SMTP_client.Send($Mail_massage)
ここまできたら
ここまでくりゃもうあとはタスクスケジューラやら、JP1/AJSやらで煮るなり焼くなりです!