【问题标题】:Powershell EMail: How to add new line in email Body?Powershell EMail:如何在电子邮件正文中添加新行?
【发布时间】:2015-11-17 07:17:03
【问题描述】:

对 Powershell 非常陌生。编写了运行良好的 powershell 脚本,但是当它发送邮件时,它不会在正文中显示换行符。以下是配置:

$EmailFrom = "monitoring@mydomainname.no"
$EmailTo = "fatherazrael@tcs.com"
$Subject = "Disk Space Low: $server"

$Body = "Server Name:  $server, <NEED NEW LINE> Drive: C,  <NEED NEW LINE>  Total Size: $sizeGB,  <NEED NEW LINE> Space Left: $freeSpaceGB"

$SMTPServer = "scan.opinergo.fn"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
#$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("<From mail ID>", "Password");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)   

在正文中,我使用以下代替 ;搜索了一下:

1) %0d%0a - 当用户检查邮件时不工作

2) \n - 当用户检查邮件时不工作

3) - 用户检查邮件时不工作

谁能建议我还能用什么来获取新行或脚本中所需的任何修改?

【问题讨论】:

  • PowerShell 换行符是`n (backtick-n),你试过了吗?
  • 没有。在搜索中还没有得到那个。谢谢。正在尝试。
  • @TessellatingHeckler 谢谢。它正在工作

标签: powershell email newline


【解决方案1】:

(来自我的评论)

PowerShell 换行符是 `n (backtick-n),所以:

$Body = "Server Name:  $server, <NEED NEW LINE> Drive: C

变成:

$Body = "Server Name:  $server, `n Drive: C

【讨论】:

    【解决方案2】:

    我不确定这些其他用户是如何让 `n 创建一个新行的,但我永远无法让它工作......

    相反,我最终做了以下事情......

    • 使用-BodyAsHtml 开关
    • 使用&lt;br /&gt; (break) html 标记

    例如...

    powershell -ExecutionPolicy ByPass -Command Send-MailMessage -BodyAsHtml -SmtpServer 'myemail.server.com' -To 'Mr To <to@server.com>' -From 'Mr From <from@server.com>' -Subject 'Reports From Daily SQL Backup Jobs' -Body 'There was an issue backing up the databases and sending them to the virtual drive.<br />Test Line 2.<br />Test Line 3.-more on line 3<br />Test Line 4.<br />EOF<br />'"
    

    【讨论】:

    • 谢谢。我尝试了“r", "n”、“rn”、[System.Environment]::NewLine 和一些我忘记的组合。我要么没有回车,要么得到 2 个回车,这太讨厌了。
    • 是的,我也花了很长时间。它让我发疯,直到我认为使用 html 是要走的路。
    【解决方案3】:

    技术上应该是

    $body = "first line" + "`n" + "second line"
    

    否则,第一行将使用尾随创建,第二行使用前导空格。

    【讨论】:

    • 不要创建新答案,而是评论或编辑现有答案。
    【解决方案4】:

    尽管我使用的是 4.0 版,但只需按照您希望它出现的方式将其放入脚本中即可。不确定您使用的是哪个版本或是否有影响。

    $Body = "Server Name:  $server
    Drive: C
    Total Size: $sizeGB
    Space Left: $freeSpaceGB"
    

    【讨论】:

    【解决方案5】:

    PowerShell 换行符是n, and can only be used in double quotes. Single quotes will print the actual "n"。

    $Body = "Server Name:  $server, <NEED NEW LINE> Drive: C"
    

    变成:

    $Body = "Server Name:  $server,`nDrive: C"
    

    【讨论】:

    • 请不要复制粘贴其他用户的答案。
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2014-04-24
    • 2011-07-11
    • 1970-01-01
    • 2014-11-13
    • 2021-12-21
    相关资源
    最近更新 更多