メールのテストをするときなど、大量にメールを送りたい時がありますよね。そんな時は PowerShell を使って SmtpClient でささっとメールを送れば解決します。
でも、差出人とか件名が重複しないようにしたい時ってありますよね。そんな時の PowerShell スクリプトを書いたので、備忘録的に載せておきます。
function Get-RandomString($Length)
{
$Characters = 'abcdefghkmnprstuvwxyzABCDEFGHKLMNPRSTUVWXYZ'
$Random = 1..$Length | ForEach-Object { Get-Random -Maximum $Characters.length }
return [String] -join $characters[$random]
}
function Get-RandomMailAddress($LocalPartLength, $DomainPartLength, $TopLevelDomainName)
{
$Result = Get-RandomString($LocalPartLength)
$Result += "@"
$Result += Get-RandomString($DomainPartLength)
$Result += "."
$Result += $TopLevelDomainName
return $Result
}
$From = Get-RandomMailAddress -LocalPartLength 10 -DomainPartLength 5 -TopLevelDomainName "com"
$To = "user01@contoso.com"
$Subject = "Random Mail " + (Get-Date).ToString("yyyyMMddHHmmss")
$Body = "ランダムに作成したメール。"
$Body += Get-RandomString(10)
$SMTPServer="192.168.1.1"
$Port="25"
$SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer,$Port)
$SMTPClient.EnableSsl=$false
$MailMassage=New-Object Net.Mail.MailMessage($From,$To,$Subject,$Body)
$SMTPClient.Send($MailMassage)
これを .ps1 ファイルとして保存しして実行したら、てきとうなメールが送信できます。基本的な SmtpClient の使い方は説明しませんが、宛先や SMTP サーバーは適宜変更が必要です。差出人が存在しないドメイン名になるので、ちゃんと受信してくれるかどうかは接続先の SMTP サーバー次第ですが。。。