簡單的流程就是先建立一個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/
沒有留言:
張貼留言