.Net Framework のMailオブジェクトを使っても良いのですが、Send-MailMessageで送ってみます。

だいたいこんな感じです。

Send-MailMessage -SmtpServer <SMTPサーバー> -From <送信元アドレス> -To <アドレス配列> -Cc <アドレス配列> `
                 -Subject <件名> -Body <本文>

宛先などを ";"(セミコロン)で区切った文字列で設定を持つ場合は、こんな感じで。

-To ("hogehoge@hoge.com;foobaa.hoge.com" -split ";")

そして少し手こずったエンコード指定。ヘルプはこう書いてあるのですが…

-Encoding <Encoding>
 本文と件名に使用されるエンコードを指定します
 有効な値は、ASCII、UTF8、UTF7、UTF32、Unicode、BigEndianUnicode、Default、
 および OEM です。ASCII が既定値です。

-Encoding UTF8 で実行すると…

Send-MailMessage : パラメーター 'Encoding' をバインドできません。
"UTF8" の値を "System.String" 型から "System.Text.Encoding" 型に変換できません。

怒られる…
で調べた結果。

$enc = [System.Text.Encoding]::UTF8
Send-MailMessage -Encoding $enc …

で無事送信成功。他のコマンドレットではこんなことしなくて良いのに…

添付ファイルも Attachmentsオプションで簡単につけられるので便利です。 欲を言えば、Cc等のオプションの引数が $null の場合は無視してほしいかなと。現状はキッチリ?エラーを返すのでCC有無で分岐が必要です。





タグ:

powershell
最終更新:2014年01月10日 11:37