Powershell HTML电子邮件格式

Powershell HTML电子邮件格式,powershell,powershell-2.0,html-email,Powershell,Powershell 2.0,Html Email,下面的脚本将数据库备份详细信息放入一个有边框的格式良好的表中,并另存为.htm。然后它会通过电子邮件发送报告,但当报告通过电子邮件发送时,“表”在“LastBackupDate”列和“LastLogBackupDate”列之间没有边框,也没有间隙-它基本上与powershell控制台上的结果相同。有人能告诉我如何格式化电子邮件,以便所有的html都从文件中使用吗?另外,由于gmail ssl存在问题,我无法使用send mailmessage。谢谢 #HTML $a = "<style&

下面的脚本将数据库备份详细信息放入一个有边框的格式良好的表中,并另存为.htm。然后它会通过电子邮件发送报告,但当报告通过电子邮件发送时,“表”在“LastBackupDate”列和“LastLogBackupDate”列之间没有边框,也没有间隙-它基本上与powershell控制台上的结果相同。有人能告诉我如何格式化电子邮件,以便所有的html都从文件中使用吗?另外,由于gmail ssl存在问题,我无法使用send mailmessage。谢谢

#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 = "someone@domain.com"
$emailto = "me@gmail.com"
$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("someone@domain.com", "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")
#HTML
$a=“”
$a=$a+“表{边框宽度:1px;边框样式:实心;边框颜色:黑色;边框折叠:折叠;}”
$a=$a+“TH{边框宽度:1px;填充:10px;边框样式:纯色;边框颜色:黑色;}”
$a=$a+“TD{边框宽度:1px;填充:10px;边框样式:纯色;边框颜色:黑色;}”
$a=$a+“”
#设定日期
$date=(get date).ToString('yyyyymmdd')
#定位数据库
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')| out null
$s=新对象('Microsoft.SqlServer.Management.Smo.Server')“LOCALHOST\SQLX64”
#检索上次备份日期-用于完整备份和日志备份
$dbs=$s.Databases
$backups=$dbs |选择名称、LastBackupDate、LastLogBackupDate |排序对象LastBackupDate |转换为HTML-head$a-body“DB01数据库备份详细信息$date”| Out File$(“D:\SQL\u Backup\u Log\u Script\Logs\Backup\u Log\u Temp.htm”)
#电子邮件报告
$EmailFrom=”someone@domain.com"
$emailto=”me@gmail.com"
$Subject=“数据库备份日志$date”
$Body=获取内容D:\SQL\u Backup\u Log\u Script\Logs\Backup\u Log\u Temp.htm
$SMTPServer=“smtp.gmail.com”
$SMTPClient=新对象Net.Mail.SMTPClient($SmtpServer,587)
$SMTPClient.EnableSsl=$true
$SMTPClient.Credentials=新对象系统.Net.NetworkCredential(“someone@domain.com“,“此处密码”);
$message=新对象Net.Mail.MailMessage($EmailFrom、$EmailTo、$Subject、$Body)
$message.IsBodyHtml=$true;
$SMTPClient.Send($message)
#重命名文件以包含今天的日期
重命名项-路径D:\SQL\u Backup\u Log\u Script\Logs\Backup\u Log\u Temp.htm-newname($date+“\u DB01\u Backup\u Log.htm”)
尝试更改此行(无法测试是否存在此问题):

Net.Mail.MailMessage中的
body
属性
接受
[string]
,获取内容返回
[string[]]

尝试更改此行(无法测试这是否是问题):


<> > <代码>正文>代码>属性>代码>邮件.Mail消息>代码>接受<代码> [String ]<代码>,获取内容返回<代码> [String []]/C> > /P>作为一个旁白,考虑用“PixS壳”中的“这里的字符串”替换“$A= $A+”重复。这会让你的生活轻松一点+1@xcud。夏洛特,文件在发送之前在浏览器中看起来不错吗?Shay,是的。HTM文件看起来不错。@ XCUD -谢谢,是的,这很有用,而且会使生活更容易。适合我的数据库,它工作得很好。这会让你的生活轻松一点+1@xcud。Charlotte,文件在发送前在浏览器中看起来很好?Shay,是的.htm文件看起来很好。@xcud-谢谢,是的,这很有用,会让生活更轻松。根据我的数据库,它工作得很好。谢谢,但电子邮件报告没有改变。刚刚意识到,电子邮件的格式一直都很好,只是GMAIL不会显示格式。它看起来很好看!谢谢,但是电子邮件报告没有改变。我刚刚意识到,电子邮件的格式一直都很好,只是GMAIL不会显示格式。它看起来很好看!
$Body = [System.IO.File]::ReadAllText("D:\SQL_Backup_Log_Script\Logs\Backup_Log_Temp.htm")