从PSCustomObject创建Outlook HTML表

时间:2016-01-31 01:10:55

标签: html email powershell outlook

我有一个PSCustomObject $result,其中包含我过滤的数据,目的是创建一个将通过Send-MailMessage发送的HTML表格。

我可以创建一个看起来很棒的HTML表,但我试图将此表插入到Outlook电子邮件的正文中,这似乎不适用于CSS,因为在Outlook Word中进行渲染(从我读)。如果只是将htm文件附加到电子邮件是我唯一的选择,我会走这条路线,但我的偏好是将表格插入电子邮件正文。

$denied = @()
foreach ($a in $result) {
  if ($a.MaintenanceWindow -eq 'Not found!' -or $a.LastReboot -eq 'Access Denied!') {
    $denied += $a
 }

} #end foreach

$a = @'
"<style>"
"BODY{background-color:lightgrey;}"
"TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
"TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
"TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
"</style>"
'@

$denied | ConvertTo-Html -Head $a | Out-File D:\c.htm;
ii D:\c.htm

1 个答案:

答案 0 :(得分:2)

如果您希望将表格作为易于完成的电子邮件正文。

# -Body expects one string. Out-String will take care of that. 
$HTMLBody = $denied | ConvertTo-Html -Head $a | Out-String
# To be sure it is rendered as HTML we use the switch -BodyAsHTML
Send-MailMessage -To $toAddresses -From $fromAddresses -Subject "All over this table" -Body $HTMLBody  -BodyAsHtml -SmtpServer server

现在该表将成为邮件。

我想在

之外指出一些事情

我的$a存在问题。我删除了所有外部双引号。不是和他们在一起读书。

$a = @'
<style>
BODY{background-color:lightgrey;}
TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}
TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}
</style>
'@

当我们谈论$a时,你将它用作foreach过程变量和CSS变量。使用有意义的名称,你不会遇到意外覆盖自己的变量的错误。

您正在从现有数组的过滤内容中创建$denied数组。虽然没有太多的项目是性能需求而且不是必需的。

$denied = $result | Where-Object{
  $_.MaintenanceWindow -eq 'Not found!' -or
  $_.LastReboot -eq 'Access Denied!'
}