SSIS-從db讀取email欄位來發送信件

SSIS-從db讀取email欄位來發送信件

先說明本篇文章,也是從我之前的blog的文章搬過來的,若有些浮水印造成閱讀困難,敬請原諒哦..

這次來介紹如何從資料庫中讀取資料來批次發mail

假設現在是因為聖誕節快到了,很多公司應該都會針對自己的客戶發一些祝福的話,

但若有上百個客戶要發的話,那要怎麼發會比較快呢?當然第一個想到的是用outlook啊,

但若要再針對不同屬性的客戶,而所發的mail內文有所不同的話,就可以使用ssis的功能

本次會介紹使用迴圈物件結合資料庫中的資料發mail

首先我們在控制流程的頁籤上先拉出一個"資料流程工作"

493e981ed14db

然後拉一個oledb 來源的控制項

493e982985f6a

然後在oledb 來源上接滑鼠右鍵選編輯,之後請自行連到一個有 email欄位的資料表,下圖為我demo用的範例資料,我的範例欄位有

name:用來當作主旨

mail:收件者

bodymsg:訊息內文

493e98411a961

然後在資料流程目的地拉出"資料錄集目的地",並且將"oledb 來源"與"資料錄集目地"

493e98589f883
接下來我們必須要設一個變數來指資料集的資料,請在空白的地方按滑鼠右鍵選擇"變數"

493e98609170b

我這裡有定義4個變數,你可以照我下圖的方式先設定,之後再改成你自己想要參數名稱

我要說明是的必須先把這個變數的"值",先填入預設值,為什麼呢?因為這樣才不會到時候執行時有錯誤,在後面會再說明

另外要注意的事,下圖中的範圍,若你的"範圍"名稱等同你的dtsx檔名,則是全域變數,若是範圍名稱為控制項名稱,則為區域變數

 

493e986ade0f5

讓我們繼續回到"資料流程"頁籤,在"資料錄集目的地"控制項上按滑鼠右鍵選編輯

在variablename中填入rs這個變數,因為rs的資料類型為object,可以放如datset或recordset這個資料型別的資料

a1

切換到"輸入資料行"全選所有欄位

a2

接下來我們拉一個"foreach迴圈容器"

a3

切換到集合頁籤,然後請換下圖的方式選擇

a4

再切換到"變數對應"頁籤,在右邊請設定變數名稱所需對應的recordset的欄位

在這裡需說明一下,順序的話,請依照你在"資料集目的地",所設定的順序,若忘記了,請往上卷動看一下哦,索引從0開始

a5

 

接下來要設定SMTP

493d46cdb3e72

拉一個"傳送郵件工作"

拉出後,在"傳送郵件工作"控制項上按滑鼠右鍵,選編輯,或快按滑鼠左鍵二下也可以,將會出現一個視窗

切換到郵件頁籤,先設定smtpconnection,在下拉選單中選擇l新增連接

493d46de2cb62

在smtp中填入你自己的smpt伺服器,若你是在公司的話,就要問管理郵件server的mis,stmp伺服器是多少

輸入在這裡即可,若是有需要AD驗証的話,記得要勾選"使用windows驗證"

493d46e8bcb6c

先填入預設值,這個動是必要的哦,否則ssis會連讓你啟動都不行啟動,會跟你報錯說你沒有填預設值不讓你執行

a6

切換到運算式頁籤,在expressions旁的...按下後

493e9901b9598

首先選擇messagesource,選擇再點擊運算式旁的...按鈕

a7

在開窗後可以自定運算式,可以參考下方設定方式

493e991c02c1e

另外兩個也是照上方會方式設定,只是recipients的部份就不行再自己輸入文字到運算式了哦

就直接把你的db中的email欄位拉進來即可

 

終於設定完啦,接下來就可以試run看看囉

若不行的話,可以檢查一下,變數(mailaddress)的部份及"傳送郵件工作"控制項的接收者一定要先填預設值哦,不然一執行就會掛了哦