2016-09-08 15 views
2

Я пытаюсь использовать объект MailMessage для отправки электронной почты с помощью PowerShell. Сценарий использует Import-CSV для использования файла, затем использует ConvertTo-HTML в теле письма. Я добавил несколько замененных HTML, поскольку почтовый клиент, которого я отправляю, игнорирует теги <style>.Отправка - HTML-адрес электронной почты

Вот мой сценарий:

$smtpServer = "x.x.x.x" 
$smtpFrom = "[email protected]" 
$smtpTo = "[email protected]" 
$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) ошибки, хотя, с:

«Не удается найти перегрузку„Отправить“и количество аргументов:„1“».

Если я заменю $smpt.Send($finalHTML) с $smpt.Send($message), скрипт работает, электронная почта отправляет это HTML, но ни один из $finalHTML не применяется.

ответ

1

Его, потому что метод Send принимает System.Net.Mail.MailMessage объект в качестве параметра, так что вы, вероятно, хотите, чтобы назначить $finalHTML на $message.body и передать сообщение:

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

Это сделал это. Большое спасибо. Я был на правильном пути с моим tshooting, но вы пригвоздили его. Еще раз спасибо. – CreedC