【Powershell】Powershellでメールをおくる

最近powershellでバッチを作ることにはまっているので、

powershell関連をちょこちょこ書いていこうかと思います。

さっそく、powershellで、メールを送る方法ですが

Send-MailMessage この一文だけでOKです。

powershellはいろいろ命令がそろっているのでホント便利ですよね。

下記サイト参考にさせていただきました。
tech.lecume.net


こんな感じで使ってます。

Send-MailMessage -To $to -From $from -Cc $Cc -SmtpServer $smtp -Subject $subject -Body $body -Encoding ([System.Text.Encoding]::UTF8)

引数を追加すると最終的にこんな感じです

# 宛先メールアドレス
$to = "宛先@宛先.com"

# 送信元メールアドレス
$from = "送信元@送信元.com"

# Cc
$Cc = "CC@CC.com"

# SMTPサーバー(IP、ホスト名どちらでも)
$smtp = "SMTP.com"

# 件名
$subject = "件名"

# 本文
[string]$body = @()
$body += "1行目n`n"
$body += "2行目`n`n"
$body += "3行目`n`n"
$body += "4行目`n`n"

#メール送信
Send-MailMessage -To $to -From $from -Cc $Cc -SmtpServer $smtp -Subject $subject -Body $body -Encoding ([System.Text.Encoding]::UTF8)

 

これで正常、異常に分けて宛先を変えたり、本文を変えることも可能です。

本文の $body = @() は後から値を追加していきたいために、いったん空の配列を

作成しています。

こうすることで、ArrayListのように宣言を覚えておかなくても使用することができます。

こういう技を覚えておくと便利ではないでしょうか。

 
次に

添付ファイルがある場合は引数を増やしていくだけです。

#添付ファイル
$attachment = $File

Send-MailMessage -To $to -From $from -Cc $Cc -Attachments $attachment -SmtpServer $smtp -Subject $subject -Body $body -Encoding ([System.Text.Encoding]::UTF8)

 

こちらも正常、異常によって添付するものを分けて使っています。

バッチでメール送れるとやりたいことが増えますよね。