当我使用powershell发送电子邮件时,在电子邮件的最后有一列1行,2行表,col0行0中有一个星号,col0 row1中有一个数字:
我理解这很可能是“运行此脚本所花费的时间”,但我的最终用户不希望它在那里。有没有办法删除它?
我正在做的是迭代列表并获取所有不合规的项目,然后将它们放入相关区域下的表格中。所以身体基本上是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)
答案 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