发送 - 替换HTML电子邮件

时间:2016-09-08 19:00:58

标签: powershell mailmessage

我正在尝试使用MailMessage对象发送带有PowerShell的电子邮件。该脚本使用ConvertTo-HTML来使用文件,然后在电子邮件正文中使用<style>。我添加了一些替换的HTML,因为我发送的电子邮件客户端忽略$smtpServer = "x.x.x.x" $smtpFrom = "RepairSummary@email.org" $smtpTo = "recipient@email.org" $messageSubject = "Weekly Student Device Repair Summary $((Get-Date).ToShortDateString())" $message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto $message.Subject = $messageSubject $message.IsBodyHTML = $true $summ = Import-Csv -Path 'C:\folder\file.csv' $message.body = @" <html> <body> Hello,<br><br> Here is your weekly repair summary.<br><br> $($summ | ConvertTo-Html)<br><br> Thank you,<br><br> Technology </body> <html> "@ $finalHTML = $message.body -replace "<table", "<table border='0' cellspacing='0' cellpadding='10' style='border: 1px solid black; border-collapse: collapse;'" $finalHTML = $finalHTML -replace "<th", "<th border='0' cellspacing='0' cellpadding='0' style='border: 1px solid black; border-collapse: collapse; padding:5px;'" $finalHTML = $finalHTML -replace "<td", "<td border='0' cellspacing='0' cellpadding='0' style='border: 1px solid black; border-collapse: collapse; padding:5px;'" $finalHTML | Out-File "c:\folder\file.html" $smtp = New-Object Net.Mail.SmtpClient($smtpServer) $smtp.Send($finalHTML) 标记。

这是我的剧本:

| Out-File

我感到困惑,因为$smtp.Send($finalHTML)有效并且看起来我希望电子邮件正文看起来如何。

$smpt.Send($finalHTML)错误,但是:

  

&#34;找不到&#34;发送&#34;参数计数:&#39; 1&#39;&#34;。

如果我将$smpt.Send($message)替换为$finalHTML,则脚本会运行,电子邮件会发送,它是HTML,但不会应用{{1}}。

1 个答案:

答案 0 :(得分:1)

因为Send方法将System.Net.Mail.MailMessage对象作为参数,所以您可能希望将$finalHTML分配给$message.body并传递消息:

# ....
$message.body = $finalHTML
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)