格式化电子邮件数据库查询结果

时间:2015-07-29 15:53:59

标签: mysql email powershell-v2.0

我有一个用于运行MySQL查询的模块。通常它只是用于更新数据库,为此它工作正常。但现在我需要得到一个结果并通过电子邮件返回。

我的模块结束于:

return $dataSet.Tables["data"]

我可以使用

在屏幕上显示此结果集
$result1 | Format-Table -AutoSize

但是当我尝试将其添加到我的电子邮件中时,它无法正常工作。

我尝试了各种选项,

$body = ($result1 | Format-Table -AutoSize | Out-String)

最接近,但没有对齐任何列和标题。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

列可能看起来未对齐,因为大多数GUI邮件客户端使用比例字体。对于对齐列,您需要使用等宽字体或HTML表格显示文本。您可以使用ConvertTo-Html cmdlet将结果转换为此类表:

$htmlbody = $result1 | ConvertTo-Html
Send-MailMessage ... -Body $htmlbody -BodyAsHtml

在我的测试中,转换从隐藏属性中产生了一些不需要的列,因此您可能需要从$result1中选择特定属性。

如果您还想在HTML正文中使用其他自定义文本,则可以将表格转换为HTML片段(只有HTML格式的表格)并将其插入更大的HTML字符串中:

$htmltemplate = @"
<html>
<head>...</head>
<body>
<p>{0}</p>
{1}
</body>
</html>
"@

$table = $result1 | ConvertTo-Html -Fragment

$htmlbody = $htmltemplate -f 'my custom text', $table
Send-MailMessage ... -Body $htmlbody -BodyAsHtml