2012-02-02 105 views
1

我想寫將由計劃任務拉開序幕PowerShell腳本,該腳本將返回我們的數據庫備份的詳細信息,這些保存到一個名爲.htm文件並通過電子郵件發送結果。PowerShell的 - 使用.htm文件作爲電子郵件的正文

到目前爲止得到的備份信息,並保存爲.htm文件工作正常,但我無法弄清楚如何得到電子郵件的身體看起來像.htm文件。此刻的電子郵件身體看起來像原始的HTML代碼。

到目前爲止:

$a = "<style>" 
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$a = $a + "TH{border-width: 1px;padding: 10px;border-style: solid;border-color: black;}" 
$a = $a + "TD{border-width: 1px;padding: 10px;border-style: solid;border-color: black;}" 
$a = $a + "</style>" 

$date = (get-date).ToString('yyyyMMdd') 





[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "LOCALHOST\SQLX64" 

$dbs=$s.Databases 

#Retrieves the last backup dates - both for FULL and LOG backups 

$backups = $dbs | SELECT Name,LastBackupDate, LastLogBackupDate | ConvertTo-HTML -head $a -body "<H2>Database Backup Details $date </H2>" | Out-File $("D:\SQL Backup Log Script\Logs\"+ $date +"_DB01 Backup Log.htm") 


$EmailFrom = "[email protected]##.net" 
$emailto = "##@##.net" 
$Subject = "DB01 SQL Backup Log" 
$Body = Get-Content ("D:\SQL Backup Log Script\Logs\"+ $date +"_Backup Log.htm") 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("##", "##"); 
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) 

感謝, 夏洛特。

回答

2

試加之前send()方法這一行:

$SMTPClient.isbodyhtml= $true 

編輯點評後:

你必須使用這個對象:

$ SMTPClient =新物體System.Net。 Mail.MailMessage

+0

謝謝,但這是行不通的:在這個對象上找不到Property'isbodyhtml' – Charlotte 2012-02-02 12:58:07

+1

- 編輯答案。您需要更改.NET對象填寫您的必需品。 – 2012-02-02 13:14:00

+0

謝謝,這是現在的工作。 – Charlotte 2012-02-03 13:30:16

2

嘗試使用Send-MailMessage cmdlet代替,它允許您指定-BodyAsHtml參數:

Send-MailMessage ` 
    -From $EmailFrom -To $EmailTo ` 
    -Subject $Subject -Body $Body -BodyAsHtml $true ` 
    -Credential $Credentials 

或者你將不得不使用SmtpClient.Send(MailMessage)方法,而不是創造一個MailMessage對象,你可以設置MailMessage.IsBodyHtml屬性:

var client = New-Object System.Net.Mail.SmtpClient 
# ... 
var message = New-Object System.Net.Mail.MailMessage 
message.IsBodyHtml = $true 
# ... 
$client.Send($message) 
+0

謝謝,這將是理想的,但我不能使用Send-MailMessage cmdlet發送郵件到Gmail郵件服務器。 – Charlotte 2012-02-02 16:22:26

2

收集所有的答案在一塊:

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("##", "##"); 
$message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) 
$message.IsBodyHtml = $true; 
$SMTPClient.Send($message) 
相關問題