SSIS-從db讀取email欄位來發送信件
先說明本篇文章,也是從我之前的blog的文章搬過來的,若有些浮水印造成閱讀困難,敬請原諒哦..
這次來介紹如何從資料庫中讀取資料來批次發mail
假設現在是因為聖誕節快到了,很多公司應該都會針對自己的客戶發一些祝福的話,
但若有上百個客戶要發的話,那要怎麼發會比較快呢?當然第一個想到的是用outlook啊,
但若要再針對不同屬性的客戶,而所發的mail內文有所不同的話,就可以使用ssis的功能
本次會介紹使用迴圈物件結合資料庫中的資料發mail
首先我們在控制流程的頁籤上先拉出一個"資料流程工作"
然後拉一個oledb 來源的控制項
然後在oledb 來源上接滑鼠右鍵選編輯,之後請自行連到一個有 email欄位的資料表,下圖為我demo用的範例資料,我的範例欄位有
name:用來當作主旨
mail:收件者
bodymsg:訊息內文
然後在資料流程目的地拉出"資料錄集目的地",並且將"oledb 來源"與"資料錄集目地"
接下來我們必須要設一個變數來指資料集的資料,請在空白的地方按滑鼠右鍵選擇"變數"
我這裡有定義4個變數,你可以照我下圖的方式先設定,之後再改成你自己想要參數名稱
我要說明是的必須先把這個變數的"值",先填入預設值,為什麼呢?因為這樣才不會到時候執行時有錯誤,在後面會再說明
另外要注意的事,下圖中的範圍,若你的"範圍"名稱等同你的dtsx檔名,則是全域變數,若是範圍名稱為控制項名稱,則為區域變數
讓我們繼續回到"資料流程"頁籤,在"資料錄集目的地"控制項上按滑鼠右鍵選編輯
在variablename中填入rs這個變數,因為rs的資料類型為object,可以放如datset或recordset這個資料型別的資料
切換到"輸入資料行"全選所有欄位
接下來我們拉一個"foreach迴圈容器"
切換到集合頁籤,然後請換下圖的方式選擇
再切換到"變數對應"頁籤,在右邊請設定變數名稱所需對應的recordset的欄位
在這裡需說明一下,順序的話,請依照你在"資料集目的地",所設定的順序,若忘記了,請往上卷動看一下哦,索引從0開始
接下來要設定SMTP
拉一個"傳送郵件工作"
拉出後,在"傳送郵件工作"控制項上按滑鼠右鍵,選編輯,或快按滑鼠左鍵二下也可以,將會出現一個視窗
切換到郵件頁籤,先設定smtpconnection,在下拉選單中選擇l新增連接
在smtp中填入你自己的smpt伺服器,若你是在公司的話,就要問管理郵件server的mis,stmp伺服器是多少
輸入在這裡即可,若是有需要AD驗証的話,記得要勾選"使用windows驗證"
先填入預設值,這個動是必要的哦,否則ssis會連讓你啟動都不行啟動,會跟你報錯說你沒有填預設值不讓你執行
切換到運算式頁籤,在expressions旁的...按下後
首先選擇messagesource,選擇再點擊運算式旁的...按鈕
在開窗後可以自定運算式,可以參考下方設定方式
另外兩個也是照上方會方式設定,只是recipients的部份就不行再自己輸入文字到運算式了哦
就直接把你的db中的email欄位拉進來即可
終於設定完啦,接下來就可以試run看看囉
若不行的話,可以檢查一下,變數(mailaddress)的部份及"傳送郵件工作"控制項的接收者一定要先填預設值哦,不然一執行就會掛了哦