社内SEの徒然なる日記

powerShellでメールを複数アドレスに送ってみた

■ 同時送信

随分前に、システムで異常を検出したら管理者アドレスにメールを飛ばすっていうモノをPowerShellで作った(powerShellでメールを送ってみた)のですが、これを、複数のユーザー(というか、アドレス)にメールを送信することになりました。

PowerShellでメールを送るには、send-mailmessageというコマンドを使用します。
んで、このコマンドは引数 -to で送信先を設定するのですが、この -to の型ってString型の一次元配列なのです。

という事は...


# エンコード
$encoding = [System.Text.Encoding]::UTF8

# メールアドレス(送信者)
[System.String]$fromAddress = "システム管理者 <******@k**az***.co.jp>"

# メールアドレス(受信者)
[System.String[]]$toAddress = @("*****k1@d**m**.ne.jp", "*****k2@test.co.jp")

# SMTPサーバ
[System.String]$serverAddress = "10.2**.1.*4"

# コマンド実行
send-mailmessage -from $fromAddress -to $toAddress -SmtpServer $serverAddress -Encoding $encoding -subject "件名" -Body "本文"


といった感じで、-to に設定する変数としてString型の配列を用意すればOKでした。

上記の例だと、*****k1@d**m**.ne.jp と *****k2@test.co.jp の2つのアドレスに送信されます。

■ 少し考えましょう

2~3人ならともかく、もっと大勢に送るとなると1行にダラダラと書くのも嫌らしいです。

って事で、送信先の書き方を変えてみました。

# メールアドレス(受信者)
[System.String[]]$toAddress = @(`
"システム共通 ", `
"システム管理者 ", `
"担当 ", `
"tantou2@d***mo.ne.jp", `
"会社携帯 ", `
"五月蠅い人 " `
)


PowerShellは、行末にバックスラッシュ(`)を書くと一つのコマンドを改行して書いていけます。
それを利用して、メンテナンスしやすくしました。

まぁ、アドレスの一覧を外部ファイルに書いておいて、送信時のそれを読み込むって手の方が良いかも知れませんが...

■ 後書き

今まで困っていなかったのですが、ちょっとトラブルが起きて携帯やスマホにもメール送信する事になったのです。

会社がお休みの時に、会社のメールアドレスに送信しても、誰も見れない訳でして... スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する