メールのテストをするときなど、大量にメールを送りたい時がありますよね。そんな時は PowerShell を使って SmtpClient でささっとメールを送れば解決します。
でも、差出人とか件名が重複しないようにしたい時ってありますよね。そんな時の PowerShell スクリプトを書いたので、備忘録的に載せておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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 サーバー次第ですが。。。