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

假設現在是因為聖誕節快到了,很多公司應該都會針對自己的客戶發一些祝福的話,但若有上百個客戶要發的話,那要怎麼發會比較快呢?當然第一個想到的是用outlook啊,但若要再針對不同屬性的客戶,而所發的mail內文有所不同的話,就可以使用ssis的功能

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

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

image

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

image

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

name:用來當作主旨

mail:收件者

bodymsg:訊息內文

(關於如何連線,在此就不詳加說明了,請參考SSIS-建立連線資料-PART1)

image

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

image

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

image

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

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

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

image

讓我們繼續回到"資料流程"頁籤,在"資料錄集目的地"控制項上按滑鼠右鍵選編輯,在variablename中填入rs這個變數,因為rs的資料類型為object,可以放如datset或recordset這個資料型別的資料

image

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

image

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

image

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

image

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

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

image

接下來,拉一個"傳送郵件工作"到foreach迴圈容器中

image

先填入預設值

image

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

image

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

image

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

image

另外兩個也是照上方會方式設定

image

呼~~終於設定完啦

接下來就可以試run看看囉

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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 丫德 的頭像
    丫德

    信德隨想

    丫德 發表在 痞客邦 留言(0) 人氣()