在地上的SQL Server有個Database Mail 功能,但在雲上的Azure SQL卻沒有此功能,最近看到國外有人利用SendGrid及Logic Apps串起Mail功能,接下來就來實作看看。
原始出處https://www.codeproject.com/Tips/1226872/Send-Email-from-Azure-SQL-using-Logic-App
此次會用到Azure的3個功能分別是
- Azure SQL
- SendGrid
- Logic Apps
運作的情境是當應用系統發生異常狀況時會寫一筆資料至某個資料表內,透過Logic Apps定時偵測此資料表內新增的資料發送Email,而發送Email功能則透過SendGrid。
Azure SQL:
如何建立Azure SQL就不在詳述,我在資料庫內建了一個表叫ErrorLog作為Logic Apps偵測使用
SendGrid:
在Azure Portal新增SendGrid
點選建立後並輸入名稱及密碼相關資訊
在定價部份如果每個月沒有發出25,000封mail的話可以選擇免費這一等級即可
建立好之後回到SendGrid點選左上角的管理進行第1次的設定
第1次進入時需要輸入Email address做驗證,輸入要驗證的mail address後點選發送確認信件
檢查信箱若有看到開啟後點選確認此時就可以進入SendGrid系統頁面進行相關設定了
在系統左下角的設定-->點選API Key
點選右上角的新增API Keys
輸入API Key的名稱,權限選擇完全控制
Logic Apps:
再回到Azure portal新增Logic Apps
點選建立後會進入Logic Apps設計工具
這裡面有許多的範本,在這裡只選擇空白邏輯應用程式
連接器輸入SQL Server-->選擇建立項目時
在建立項目內輸入Azure SQL的連線名稱,選擇SQL資料庫及輸入使用者名稱及密碼後點選建立
在資料表名稱下拉我們所需要的資料表,預設3分鐘檢查一次,可以自行調整區間-->點選下方的新步驟
在新步驟選擇新增動作
選擇動作輸入SendGrid並選擇SendGrid傳送電子郵件(V2)
在傳送電子郵件輸入寄件人、收件人、主旨及內文,在每個欄位都可以插入資料表欄位做為參數
接下來點選上方的儲存及執行即完成整個設定過程
接下來在SSMS對Errorlog資料表新增一筆資料
3分鐘之後再檢查信箱,信已經寄來了,表示運作正常
結論:
此次實作內只有Azure SQL要收費但實在粉便宜,其餘的都不用收費,Logic Apps看起來可以把許多服務串起來有點SSIS的概念,改天有空再來研究看看。