メールのテストをするときなど、大量にメールを送りたい時がありますよね。そんな時は 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 サーバー次第ですが。。。