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

相关文章
相关标签/搜索