2012年3月8日木曜日

◆メール送信をテストする

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を本文に追記して送信する。

その他のパラメータは、そのままフォワード。

これでもメールアドレスの形式チェックや存在チェックはできないが、いくらか本番らしくテストできるかも・・・。

1 件のコメント:

  1. とても魅力的な記事でした!!
    また遊びに来ます!!
    ありがとうございます。。

    返信削除