powershell如何发送html邮件,HTML电子邮件中的PowerShell显示表

在尝试通过PowerShell构建并发送HTML电子邮件时,博主遇到了一个问题:从SQL查询获取的数据在屏幕上正常显示为表格,但在邮件正文中却出现乱码。代码包括设置HTML样式、连接SQL服务器、检索数据、格式化输出以及发送邮件的步骤。尽管数据在控制台上正确格式化,但在邮件中显示为格式化命令而非实际表格内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好吧,这可能已经得到了解答,但我是新手并且正在努力学习,所以我想我不会“得到”它.我有一个包含信息表的变量(我从SQL查询中获取).我可以将变量输出到屏幕并查看表格,但是当我尝试在正文中构建

HTML电子邮件时,它会出现乱码.

这是代码:

# This code sets up the HTML table in a more friendly format

$style = "

$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"

$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"

$style = $style + "TD{border: 1px solid black; padding: 5px; }"

$style = $style + ""

# This code defines the search string in the IssueTrak database tables

$SQLServer = "Blah"

$SQLDBName = "Blah"

$SQLUsername = "Blah"

$SQLPassword = "Blah"

$SQLQuery = "SELECT u.FirstName,u.LastName,u.EMail,COUNT(UserID) as Count

FROM dbo.Issues i with(nolock)

JOIN DBO.Users u with(nolock) on u.UserID = i.NextActionBy

where i.Status='Open'

group by u.FirstName,u.LastName,u.EMail

order by Count(*) desc"

# This code connects to the SQL server and retrieves the data

$SQLConnection = New-Object System.Data.SqlClient.SqlConnection

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; uid = $SQLUsername; pwd = $SQLPassword"

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand

$SqlCmd.CommandText = $SqlQuery

$SqlCmd.Connection = $SqlConnection

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter

$SqlAdapter.SelectCommand = $SqlCmd

$DataSet = New-Object System.Data.DataSet

$SqlAdapter.Fill($DataSet)

$SqlConnection.Close()

# This code outputs the retrieved data

$DataSet.Tables | Format-Table -Auto

# This code emails a report regarding the results of the retrieved data

$smtpServer = "Blah"

$smtpFrom = "Blah"

$smtpTo = "Blah"

$messageSubject = "IssueTrak Open Issues By Next Action Report"

$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto

$message.Subject = $messageSubject

$message.IsBodyHTML = $true

$message.Body = "Here is a listing of open issues in IssueTrak, sorted by Next Action.
"

$message.Body = $message.Body + $html

$smtp = New-Object Net.Mail.SmtpClient($smtpServer)

$smtp.Send($message)

屏幕上的输出如下所示:

35

FirstName LastName EMail Count

--------- -------- ----- -----

John Doe John.Doe@blah.com 51

Jane Doe Jane.Doe@blah.com 20

…但是电子邮件正文如下:

Here is a listing of open issues in IssueTrak, sorted by Next Action.

Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData

Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData

…等等.我究竟做错了什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值