send-mailmessage 将 html 样式标签替换为 System.String[]

send-mailmessage replaces html style tags with System.String[]

我正在尝试使用 send-mailmessage 在 powershell (v2) 中发送电子邮件。

我运行一个MySQL查询,转换成html如下:

$htmlbody = $mysqlresult | `
ConvertTo-Html -property field1, `
field2, `
field3 `
-pre "<style>table{border: 3px solid #000000;}</style>"

然后我发送电子邮件为:

Send-MailMessage -to "$ToAddress" `
    -From "$FromAddress" `
    -Subject "Subject Line" `
    -BodyasHtml "$htmlbody" `
    -SmtpServer "$SMTP"   

电子邮件已发送,我收到了包含 table 中数据的电子邮件。 但是 ... 部分被替换为 System.String[]

据我所知,里面没有 'funny' 个字符。谁能解释这是为什么?

Select 您的属性,然后将对象输送到 ConvertTo-Html:

$htmlbody = $mysqlresult |
            select field1, field2, field3 |
            ConvertTo-Html -Pre '<style>...</style>'

根据字段的实际数据类型,您可能需要首先将字符串数组转换为字符串,例如通过 calculated properties。示例:

$htmlbody = $mysqlresult |
            select field1, field2, @{n='field3';e={$_.field3 -join ' '}} |
            ConvertTo-Html -Pre '<style>...</style>'