2012-02-08 5 views
1

아래 스크립트는 데이터베이스 백업 정보를 테두리가있는 멋지게 서식이 지정된 테이블에 넣고 .htm으로 저장합니다. 그런 다음 보고서를 전자 메일로 보냅니다. 그러나 보고서에 전자 메일을 보내면 '테이블'에 테두리가없고 'LastBackupDate'열과 'LastLogBackupDate'열 사이에 간격이 없습니다. 기본적으로 PowerShell 콘솔에서 결과와 동일하게 보입니다. 누구든지 파일 형식으로 모든 HTML이 사용되도록 전자 메일의 형식을 지정하는 방법을 알려 줄 수 있습니까? 추신. gmail ssl의 문제로 인해 send-mailmessage를 사용할 수 없습니다. 감사. 얻을 컨텐츠,Powershell HTML 전자 메일 형식

$Body = [System.IO.File]::ReadAllText("D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm") 

Net.Mail.MailMessagebody 속성이 [string]을 받아 반환 [string[]]을 :

#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>" 

#Set Date 
$date = (get-date).ToString('yyyyMMdd') 

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

#Retrieves the last backup dates - for full and log backups 
$dbs=$s.Databases 
$backups = $dbs | SELECT Name,LastBackupDate, LastLogBackupDate | Sort-Object LastBackupDate | ConvertTo-HTML -head $a -body "<H2>DB01 Database Backup Details $date </H2>" | Out-File $("D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm") 

#Email Report 
$EmailFrom = "[email protected]" 
$emailto = "[email protected]" 
$Subject = "Database Backup Log $date" 
$Body = Get-Content D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "password here"); 
$message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) 
$message.IsBodyHtml = $true; 
$SMTPClient.Send($message) 

#Rename file to include today's date 
Rename-Item -path D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm -newname ($date +"_DB01_Backup_Log.htm") 
+2

제쳐두고, "$ a = $ a +"반복을 PowerShell의 'here strings'로 바꾸는 것을 고려하십시오. 그것은 당신의 삶을 좀 더 쉽게 만들어 줄 것입니다. http://technet.microsoft.com/en-us/library/ee692792.aspx – xcud

+0

+1 @xcud. 샬롯, 파일을 보내기 전에 브라우저에서 파일이 정상적으로 보입니까? –

+0

Shay, 예 .htm 파일이 좋아 보인다. – Charlotte

답변

1

이 줄을 (이 문제가있는 경우 테스트 할 수 없습니다) 변경하십시오.

+0

감사하지만 이메일로 발송 된 보고서는 변경되지 않았습니다. – Charlotte

+0

이메일이 형식 전체로 잘 전달되었으므로 GMAIL은 형식을 표시하지 않습니다. 그것은 Outlook에서 좋아 보인다! – Charlotte

+0

당신은 그것을 해결하기 위해 첨부 파일로 HTML 파일을 보낼 수 있습니다! –