mysql - 将数据库查询结果格式化为电子邮件

标签 mysql email powershell-2.0

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

我的模块结尾为:

return $dataSet.Tables["data"]

我可以使用

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

但是当我尝试将其添加到我的电子邮件时,它不起作用。

我尝试了各种选择,并且

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

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

有更好的方法吗?

最佳答案

这些列可能看起来没有对齐,因为大多数 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

关于mysql - 将数据库查询结果格式化为电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705378/

相关文章:

php - 添加将 id 复制到另一行的行时出现 Mysql 错误

php - 如何将PHP排序替换为SQL?

html - 不会并排放置表格的流畅的两列表格布局

powershell - 这是 PowerShell 类型解析机制中的边缘案例吗?

powershell - 获取由 Invoke-WmiMethod 启动的进程的状态

mysql - 如何优化这个慢查询?

Mysql按几个标准计数分组

php - 使用 foreach 遍历数组

mysql - 使用 str_replace 将 {name} 替换为人名

Powershell打印管道的内容?