PowerShell でリマインダーメールの送信メモ

メモ:
勉強会のリマインダーメールを GMail から送るときのスクリプト。*1
cmd から、

powershell ~/スクリプト.ps1 

で実行。正常に終われば、Excel のプロセスも残りません。

スクリプト.ps1

$tmpl = [System.IO.File]::ReadAllText("\テンプレート.txt")
$subject = "件名"
$from = "送信元のGMailアドレス"
$mailer = New-Object System.Net.Mail.SmtpClient("smtp.gmail.com ",587)
$mailer.EnableSsl=$True
$mailer.Credentials= New-Object System.Net.NetworkCredential("送信元のGMailアドレス", "パスワード")
$excel = New-Object -ComObject "Excel.Application"
$workbook = $excel.Workbooks.Open("\エクセルファイル.xls")
$sheet = $workbook.Worksheets.Item(1)
$range = $sheet.UsedRange
$rows  = $range.Rows 
$columns = $range.Columns 
$count = $rows.Count
for($r = 3; $r -le $count; $r++) {
  $name = $range.Cells.Item($r, 3).Text
  $address = $range.Cells.Item($r, 4).Text
  $party = $range.Cells.Item($r, 5).Text
  $body = $tmpl.Replace("[:名前]", $name).Replace("[:懇親会]", $party)
  $mailer.send($from, $address, $subject, $body)
  sleep -m 1
}
$excel.Quit()

テンプレート.txt

[:名前] 様
こんにちは、SQLWorld お だ です。
04/14 SQLWorld★大阪#9 にご登録いただきありがとうございます。
いよいよ明日開催ですが、お申込み内容/日時等ご確認お願いします。
懇親会参加:[:懇親会]
…

エクセルファイルはこんな感じ

*1:利用する場合は自己責任で