【问题标题】:PowerShell e-mail - sending .csv in body with HTMLPowerShell 电子邮件 - 使用 HTML 发送正文中的 .csv
【发布时间】:2016-10-05 08:40:10
【问题描述】:

我有一个运行 mysql 查询并将输出导出到 .csv 文件的 powershell 脚本。

然后导入它,将其发送到$body 变量并通过电子邮件发送。

这里是代码

### Script to write body of e-mail to $body variable ###

$body = @"
CHECK 4A - MONTH DATABASE REPORT

Row count should be between 3-4k, but less on a Monday.

"@  + (Import-CSV  C:\Users\*****\Documents\Reports\result4A.csv | Out-String)

我也想在电子邮件中使用一点 HTML,只是为了让它更易于阅读,所以我使用了-BodyAsHtml 参数:

### Send e-mail ###

send-mailmessage -from " Daily Check <server@company.com>" -to "Admin <e-mail@company.com>" -BodyAsHtml -subject "Daily Server Checks Report" -body "$body" -priority High -dno onSuccess, onFailure -smtpServer **.*.*.**

问题在于,这意味着 .csv 文件无法在电子邮件中正确显示,因为电子邮件正文已更改为 HTML。有没有办法解决?如果可能的话,我想保留导出到 .csv 的解决方案。

【问题讨论】:

标签: html email powershell csv


【解决方案1】:
$csvHTML = Import-Csv C:\Users\*****\Documents\Reports\result4A.csv  | ConvertTo-Html

$body = @"
    ....  
"@ + ($csvHTML[5..($csvHTML.length-2)] | Out-String)

这会将CSV 文件转换为HTML。然后,您只需选择包含 CSV 的 &lt;table&gt;&lt;/table&gt; 标签(跳过前 5 行和后 2 行)并将其添加到电子邮件正文中。

【讨论】:

  • 效果很好,但我可以澄清一下我将放置
    标签的确切位置吗?我无法让它们正常工作
  • @Ricky 您不需要添加任何&lt;table&gt; 标签,因为它们已经包含在变量$csvHTML 中。
猜你喜欢
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 2020-04-02
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
相关资源
最近更新 更多