powershell - 发送-替换HTML电子邮件

标签 powershell mailmessage

我正在尝试使用MailMessage对象通过PowerShell发送电子邮件。该脚本使用Import-CSV来使用文件,然后在电子邮件正文中使用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)出错了,但是:

"Cannot find an overload for "Send" and the argument count: '1'".



如果我将$smpt.Send($finalHTML)替换为$smpt.Send($message),则脚本将运行,电子邮件将发送,它是HTML,但没有应用任何$finalHTML

最佳答案

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

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

关于powershell - 发送-替换HTML电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398372/

相关文章:

powershell - 如何在控制台上显示PowerShell错误消息并将其写入日志?

Powershell 导出 CSV 错误

c# - C#发送带附件的邮件

c# - 解析 'The specified string is not in the form required for a subject.'

c# - 从 powershell ISE 调用时无法以异步 C# 代码写入控制台

powershell - "speak"类的奇怪属性

c# - 为什么 MailDefinition 类需要 System.Web.UI.Control?

C# 从流中压缩和压缩 csv

regex - 通过 Powershell 中的正则表达式删除孤立的换行符

c# - 纯文本 mime 电子邮件发送至 MailMessage