PowerShellから管理者宛にメールを送ることはよくある。
ある程度の人数に送ったりする場合は、変なメールを大量に送り付けないようテスト方法に気を遣う。
なにか良い方法は無いかと思うのだが、あまりコレといった方法が思いつかない。
とりあえず、関数を作って置き換える事とした。
(本来は関数自体が何らかのパラメータを受けて、実送信とテスト送信を切り替えれば良いのかもしれない)
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 | function Send-MailMessageTest { param($To,$Cc,$From,$Subject,$SmtpServer,$body,$Attachments,$Encoding) $mailArgs = $PSBoundParameters if(!$globalMailTo){Write-Host "GlobaMailTo not found" -f Red;return} $body = @" *** (Start)メール確認モジュールによる追加メッセージです *** To:{0} Cc:{1} *** (End) 以下、本文です *** {2} "@ $mailArgs.Body = $body -f $mailArgs.To,($mailArgs.Cc | Out-String),$mailArgs.Body $mailArgs.To = $globalMailTo $mailArgs.Remove("Cc") Send-MailMessage @mailArgs } |
とりあえず、テスト用のメール送信先を「$globalMailTo」として外から与えることとした。
あとは本来の送信先とCcを本文に追記して送信する。
その他のパラメータは、そのままフォワード。
これでもメールアドレスの形式チェックや存在チェックはできないが、いくらか本番らしくテストできるかも・・・。
とても魅力的な記事でした!!
返信削除また遊びに来ます!!
ありがとうございます。。