.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有無で分岐が必要です。