
■ 同時送信
随分前に、システムで異常を検出したら管理者アドレスにメールを飛ばすっていうモノを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は、行末にバックスラッシュ(`)を書くと一つのコマンドを改行して書いていけます。
それを利用して、メンテナンスしやすくしました。
まぁ、アドレスの一覧を外部ファイルに書いておいて、送信時のそれを読み込むって手の方が良いかも知れませんが...
■ 後書き
今まで困っていなかったのですが、ちょっとトラブルが起きて携帯やスマホにもメール送信する事になったのです。
会社がお休みの時に、会社のメールアドレスに送信しても、誰も見れない訳でして...
スポンサードリンク


