繁体   English   中英

使用 PowerShell 命令从批处理文件发送多行正文 email

[英]Sending a multiple line body email from batch file using a PowerShell command

我正在尝试编写一个批处理文件,它将使用 PowerShell 命令发送 email。 我唯一的挑战是向 email 主体添加多行。

我在变量 EmailBody 中声明消息,然后在 PS 命令中使用它。 问题是当我在 Outlook 2016 收到 email 时,``r `n 仅显示为纯文本。 我尝试使用 HTML 标签
但这失败了,因为即使我在批处理文件中使用 ^ 转义它们,PowerShell 也会看到 ^ 并且不喜欢它。

@echo off

:: Log File Configuration
SET DateStamp=%date:~-4,4%%date:~-7,2%
SET LogFile=F:\WinSCP_%DateStamp%.log

:: Email Configuration
SET SMTPServer=server.com
SET EmailFrom=%computername%@company.com
SET EmailTo="name1@company.com", "name2@company.com"
SET EmailSubject=Subject
SET EmailAttachment=%LogFile%
SET EmailBody="Line1 Line2 Line3"


Some code


Powershell.exe -executionpolicy remotesigned -Command "& {Send-MailMessage -To '%EmailTo%' -From '%EmailFrom%' -Subject '%EmailSubject%' -SmtpServer '%SMTPServer%' -Body '%EmailBody%' -Attachments '%EmailAttachment%'}"
                    
some code

这是问题代码的修订版。 希望这也比单行代码更具可读性。 将其全部写在 PowerShell 中会使它变得更加简单。

SET "EmailSubject=Subject"
SET "EmailBody=Line1 Line1`r`nLine2 Line2`r`nLine3 Line3"
SET "EmailAttachment=%USERPROFILE%\tp.txt"

powershell.exe -NoLogo -NoProfile -Command ^
    "Send-MailMessage" ^
        "-To %EmailTo%" ^
        "-From '%EmailFrom%'" ^
        "-Subject '%EmailSubject'" ^
        "-SmtpServer '%SMTPServer%'" ^
        "-Body '%EmailBody%'" ^
        "-Attachments %EmailAttachment%"

您应该可以在任何需要换行的地方输入 `r`n,PowerShell 将评估为回车和换行(即 Windows 样式的新行)。

但是,我同意其他答复,即在纯 PowerShell 中执行此操作可能是一个更好的主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM