簡單的流程就是先建立一個SQL連線之後,
把需要呈現的資料及寄件者名單撈出來,
再下來就是依條件處理寄信囉~簡潔明瞭吧!
首先是SQL連接的方式:
#Connection Object$connector = New-Object System.Data.SqlClient.SqlConnection( "Password=********;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS")接著使用DataAdapter建立連線以及用DataSet接得到的資料
#使用需要的query字串建立連線&撈資料$dataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($query, $connector )#宣告DataSet$dataSet = New-Object System.Data.DataSet#接資料囉~$dataAdapter.Fill($dataSet ) | Out-Null#記得關閉連線$connector .Close()另外提供Out-系列使用用途:
Out-Default 將輸出發送到預設的格式化程序和預設的輸出cmdlet。
Out-File 將輸出發送到檔案。
Out-GridView 將輸出發送到單獨視窗中的grid。
Out-Host 將輸出發送到命令行。
Out-Null 刪除輸出,不將其傳送到控制台。
Out-Printer 將輸出送至印表機。
Out-String 將對象作為一列字串送到主機。
當然如果已經確定資料正確了的話,就可以使用Out-Null刪除輸出,
在寫到其他階段的時候比較不會被前面的資料干擾判斷。
接著...資料都取得了~就該處理我們拿到的資料囉~
開始寄信前的準備!
$emailbody = $dataSet.Tables[0] | Select-Object Name, Phone, EmailAddress | ConvertTo-HTML -head $style
將所需的信件style加入HTML的head tag中,改變信件的預設樣式。
接著設定信件table style
信件內容會自動撐大喔~很有趣
再來...終於進入我們寄件的步驟啦!
設定寄件者、收件者、信件主題
信件本體
設定SMTP:
---------------------------------------------------------------------------------------------
參考資料:
自動寄信原文(主要參考資料)
http://www.simonhartcher.com/?p=146
開啟SQL連線作法
http://blog.jeffreymcmanus.com/762/database-queries-with-windows-powershell/
#HTML Email Styles$style = "<style type='text/css'>"$style = $style + "BODY{background-color:#FFFFFF;font-family:Verdana;}"$style = $style + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;font-size:12px;}"$style = $style + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#D3D3D3 }"$style = $style + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#FFFFFF }"$style = $style + "</style>"再來...終於進入我們寄件的步驟啦!
設定寄件者、收件者、信件主題
$emailFrom = "12345@test.com"$emailTo = "test@test.com"$subject = "信件主題"信件本體
$message = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody)#這是用來確保信件會是HTML格式$message.IsBodyHTML = $true設定SMTP:
$smtpServer = "smtp.xxx.xxx.xxx"$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
設定完之後就寄件囉!
$smtp.Send($message)
---------------------------------------------------------------------------------------------
參考資料:
自動寄信原文(主要參考資料)
http://www.simonhartcher.com/?p=146
開啟SQL連線作法
http://blog.jeffreymcmanus.com/762/database-queries-with-windows-powershell/
沒有留言:
張貼留言