无法获取Send-MailMessage以发送多行

时间:2016-05-24 19:40:45

标签: powershell powershell-v2.0

我提前为此道歉,因为我在整个网络上看到了很多关于它的问题,但出于某些原因,我仍然遇到问题。

我有一个脚本可以创建一个动态添加信息的数组。当脚本完成时,我需要它将该信息通过电子邮件发送给我。问题是每一行合并到我得到1行。例如:

$Body = @()
$Body += "1"
$Body += "2"
$Body += "3"
$Body += "4"

这是我的发送命令:

Send-MailMessage -To $Recipients -From $Sender -Smtp $SMTP $Subject "Test" -Body ($Body | Out-String)

我在电子邮件正文中得到的是:1234

我试过这个for循环将`n附加到每一行的开头(第一行除外),如下所示:

for ($i = 0; $i -lt Body.Count; $i++){
    if($i -eq 0){
        Write-Host $i
    }else{
        $Body[$i] = "`n" + $Body[$i]
        Write-Host $Body[$i]
    }
}

结果是更好但我得到了额外的一行:

1

2

3

4

最终我只想要这个:

1
2
3
4

过去,我通过创建这样的变量来获得我想要的格式:

$Body = @"

This is the email I want to send.  It formats great if:
    1) I want to make all the content static.

Is it possible to create the `$Body variable like this but add line by line dynamically and maintain a serpate line. (without extra lines)?

"@  

我错过了什么?它有点简单...感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

WOW所以这是一件很挑剔的事情......我发现使用它可以让一切看起来都正确(正如Ryan所建议的那样):

-Body ($Body -Join "`r`n")

但是在我的实际脚本的上下文中它没有用。好吧,看起来这一切都与日期的方式有关。这是减少显示:

不工作

$Body = @()
$Body += "Beginning processing on: " + (Get-Date)
$Body += "No advertisements found, exiting"

也不起作用

$Body = @()
$DateTime = Get-Date
$Body += "Beginning processing on: $DateTime"
$Body += "No advertisements found, exiting"

当我删除任何与日期有关的内容时,格式化是正确的。最终它只是采取了一个简单的“。”使它正常工作。

工作 - 请注意第3行

$Body = @()
$DateTime = Get-Date
$Body += "Beginning processing on: $DateTime."     #Note the period at the end of the line.
$Body += "No advertisements found, exiting"

据推测,我可以连接并且它可以工作但是哦,我保持原样。我不认为一段时间会那么挑剔,但现在我知道了。