我有一個用C#.Net 3.5構建的客戶端的web應用程序。 Web應用程序做了很多事情,並且有一部分我通過異步Web請求發送一些數據來對數據庫進行一些處理。這可能需要5到60分鐘。數據庫列更新後發送電子郵件
然後我創建了一個SQL觸發器,當數據庫中的列使用數據庫郵件發送郵件時(通過msdb.dbo.sp_send_dbmail)。
這工作正常,但我們的客戶端禁止我們從數據庫服務器發送郵件。
任何人都可以選擇這個嗎?
我有一個用C#.Net 3.5構建的客戶端的web應用程序。 Web應用程序做了很多事情,並且有一部分我通過異步Web請求發送一些數據來對數據庫進行一些處理。這可能需要5到60分鐘。數據庫列更新後發送電子郵件
然後我創建了一個SQL觸發器,當數據庫中的列使用數據庫郵件發送郵件時(通過msdb.dbo.sp_send_dbmail)。
這工作正常,但我們的客戶端禁止我們從數據庫服務器發送郵件。
任何人都可以選擇這個嗎?
您可以創建一個電子郵件表格,其中包含您的電子郵件所需的所有字段。爲給定處理的每封電子郵件添加一條記錄。
接下來,編寫一個Windows服務,該服務將定期對新的電子郵件記錄添加該數據庫。如果找到,生成您的電子郵件並從您的應用程序層發送它們。不要忘記有一個布爾或類似的機制,表明電子郵件已被髮送,以便它不會被撿起多次。
我的編碼器的意義聞起來有些腥意,但是讓你無法更新另一張表,你在應用程序服務器上定時檢查?並讓應用程序服務器發送警報?
甚至可以是「ReadyForSend」,「Sent」,「Error」或某事的「SendStatus」的電子郵件表的列也比觸發計劃更好。然後是某種計劃任務,查找處於正確狀態的項目以發送。
請記住這個可憐的人,他必須弄清楚這一切在6個月到一年之間是如何工作的,而這一年你可能會或可能不再參加這個項目。
和服務器放在一邊,他們應該禁止你從觸發器發送電子郵件。特別是如果這意味着你必須處理多行更新,你必須在循環中發送這些電子郵件。 –