Powershell smtp电子邮件,最后带有星号和数字

时间:2015-12-22 21:26:50

标签: powershell

当我使用powershell发送电子邮件时,在电子邮件的最后有一列1行,2行表,col0行0中有一个星号,col0 row1中有一个数字:

a table with an asterisk in the top cell and the number 1509393 in the bottom cell

我理解这很可能是“运行此脚本所花费的时间”,但我的最终用户不希望它在那里。有没有办法删除它?

我正在做的是迭代列表并获取所有不合规的项目,然后将它们放入相关区域下的表格中。所以身体基本上是7个表的列表,并发送如下:

$smtpServer = "smtpserver.us"
$msg = new-object Net.Mail.MailMessage
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)

$msg.From="productionmachine@email.com"

$msg.To.Add("user@email.com")
$msg.Subject = "Non Compliant Items"
$msg.Body = $body | ConvertTo-Html -Body $body -Head $style
$msg.IsBodyHtml = $true
$smtp.Send($msg)

1 个答案:

答案 0 :(得分:1)

您似乎在脚本的前面用实际结果(或至少添加它们)覆盖$body

然后,当您将$body传递给ConvertTo-Html时,它会绑定到InputObject参数,转换为具有单个列的表,表示属于该属性的唯一属性一个字符串有:它的长度(在你的情况下是150K字符)。

但是你没有注意到,因为$body已被-Body $body附加到html正文中。

删除$body |,它就可以了。或者更好的是,保持$body和实际结果分开。

如果你真的不需要ConvertTo-Html任何东西(它的主要功能是将实时.NET对象集合的集合转换为html表),那么就自己构建一个正文。

Here-字符串(多行字符串)和字符串格式运算符(-f)非常适用于此目的:

$htmlTemplate = @'
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    {0}
  </head>
  <body>
    {1}
  </body>
</html>
'@

$msg.Body = $htmlTemplate -f $style,$body