2010年6月18日金曜日

◆メールを送る(Send-MailMessage)

Send-MailMessage    -To "一郎<ichiro@hoge.co.jp>"                                    `
                    -From "花子 <hanako@hoge.co.jp>"                                          `
                    -Subject "Test mail"                                                                     `
                    -SmtpServer "MailServer.hoge.co.jp"                                          `
                    -Body "メール送信のテストです"                                                  `
                    -Encoding  ([System.Text.Encoding]::Default)

構文自体あまり難しいところはないが、Encodingが気に入らない。
通常のコマンドレットのEncodingパラメータは<string>となっているのに、ここでは<Encoding>となっている。
Stringで指定して自動的にキャストもしてくれない。しかもデフォルトがASCIIだと。
仕方がないのでEncodingクラスのスタティックプロパティを指定する。

コマンドプロンプトで[System.Text.Encoding]::Defaultと打つとわかるがシステムのDefaultは通常SJIS。
こんな指定が必要ならSmtpClientクラスを使うのと大差無い。

$smtpClient = new-Object Net.Mail.SmtpClient "MailServer.hoge.co.jp"
$smtpClient.Send('hanako@hoge.co.jp','ichiro@hoge.co.jp','Test Mail',’メール送信のテストです。’)

ちなみに、Powershellからのメール送信はウィルス対策ソフトにブロックされたりするので要注意。
会社などで設定変更できない場合は、Powershell.exeをコピーしてメジャーなメールソフトの名前にリネームして使うと送れたりする。
(それが許されるかどうかは会社のポリシー次第だろう)

0 件のコメント:

コメントを投稿