Power Shellでメール送信

2020年7月14日

Power Shellでメール送信をするには、

 Send-MailMessage 

を使えばよい、、というところまではネットで検索すればすぐに見つかったものの、うまくまとまっている情報が見つけられず、試行錯誤した結果、いい感じのfunctionにまとまったので、参考までにのせておきます。

##メール送信関数
function SendMail(
        $MailFrom,          # 送信元
        $MailTo,            # 宛先
        $Subject,           # タイトル
        $Body,              # 本文
        $AttachFilePath     # 添付ファイル
    ){
        $SmtpSvr = "mail.xxxx.com"
        $SmtpPort = "587"
        $AuthUser = "sample"
        $AuthPwd = "samplepass"
        $Password = ConvertTo-SecureString $AuthPwd -AsPlainText -Force
        $Credential = New-Object System.Management.Automation.PSCredential $AuthUser, $Password
        
        $CrLf = "`r`n"
        if ($Body.Length -eq 1){
            $BodyCr = $Body
        } else {
            $BodyCr = ""
            foreach ($Msg in $Body){
                $BodyCr += $Msg + $CrLf
            }
        }

        Send-MailMessage -To $MailTo `
                         -From $MailFrom `
                         -Subject $Subject `
                         -Body $BodyCr `
                         -Attachments $AttachFilePath `
                         -SmtpServer $SmtpSvr `
                         -Port $SmtpPort `
                         -Credential $Credential `
                         -Encoding ([System.Text.Encoding]::UTF8)
    }