SQL Server 2014 Database Mail重複發送郵件特殊案例

在一數據庫服務器(Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64))發現有個做業調用Database Mail發送郵件時,有時候出現一樣的郵件發送兩封的狀況,通過詳細檢查,排除了該做業裏面業務邏輯有問題的狀況,確實存在重複發送郵件的狀況, 檢查Database Mail日誌,發如今0:00~0.03報「The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2016-10-27T00:03:21). Exception Message: Cannot send mails to mail server」這類的錯誤,具體信息以下所示 數據庫

clipboard

Date 2016/10/27 0:03:21 服務器

Log Database Mail (Database Mail Log) app

Log ID 29022 測試

Process ID 11300 spa

Mail Item ID 747326 3d

Last Modified 2016/10/27 0:03:21 日誌

Last Modified By sa code

Message server

The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2016-10-27T00:03:21). Exception Message: Cannot send mails to mail server. (Mailbox unavailable. The server response was: 5.7.1 Unable to relay for zhouxxxx@xxxx.mail.onmicrosoft.com). blog

)

 

從上面日誌能夠看到是SMTP反饋zhouxxxx@xxxx.mail.onmicrosoft.com這個郵箱沒法送達。Mail Item ID就能夠查到相關,而後和開發人員一排查,就找到了發送郵件的存儲過程,檢查發現仍是由於其中一個郵箱地址弄錯了,致使這些錯誤出如今Database Mail日誌中,固然若是遇到這類錯誤,必須查看Exception Message: Cannot send mails to mail server後面括號裏面詳細的報錯信息,而後檢查、分析確認(Mailbox unavailable. The server response was: 5.7.1 Unable to relay for zhouxxxx@xxxx.mail.onmicrosoft.com). 不一樣的日誌信息,每每反饋不一樣的問題。也正是這種狀況的郵件,都出現了重複發送狀況。

 

手工測試這樣的情形(發送給多個收件人,其中一個郵件名稱故意寫錯),發現郵箱確實會收到兩封這樣的郵件。

EXEC msdb.dbo.sp_send_dbmail @subject='郵件重複發生問題測試——1',@recipients='xxxx@xxxx.microsoft.com;konglb@xxxx.com',@body='test the email send twice problem';

 

 

而後我想定位究竟是SQL Server版本問題,仍是SMTP設置問題,結果測試過程讓我更迷惑了

 

1: 測試了SQL Server 2008配置了一樣SMTP服務器的數據庫,發現這種狀況,郵件不會重複發送。那麼能夠排除SMTP的一些設置問題致使。

 

2: 測試了SQL Server 2014相同版本,相同SMTP配置的數據庫,發現這種狀況,竟然不會發生郵件重複發送的狀況。吶呢,讓人懵了。也就是隻有那臺環境下才會出現這種狀況,其它環境都沒法重現。

 

3: 檢查了Database Mail配置信息以及系統參數設置,基本一致,沒有區別。也不該該是這個致使郵件重複發送問題。

 

4: 系統管理員幫忙檢查了SMTP服務器的日誌,發現重複發送的郵件除了下面Message ID不同外,其它同樣,可是檢查msdb.dbo.sysmail_mailitems表裏面記錄,只有一條發送記錄。以下截圖所示

clipboard

 

網上也搜索了一下,沒有看到相似的問題或bug信息。真是一個很是奇怪的問題,好在這個問題解決倒很是簡單。 不過問題的詭異卻是讓人摸不着頭腦。

 

-------------------------------------------------------------------------分割線-------------------------------------------------------------------------

一網友反饋出現郵件重複發送的緣由是由於Database Mail Configuration裏面設置爲1的緣故,測試了一下,在收件人列表輸入一個錯誤郵箱,確實會收到兩封郵件。這個問題解決了!

 

image

相關文章
相關標籤/搜索