我已经配置了从sql数据库发送时事通讯电子邮件的数据库邮件。我有一个存储过程,它选择订阅者的电子邮件,并像这样向他们发送邮件:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'ProfileName',
@recipients = @email,
@subject = @thesubject,
@body = @themessage,
@body_format = 'HTML' ;用于发送的帐户工作正常,因为当我在配置数据库邮件后发送测试邮件时,它已成功发送,但问题是发送了多封邮件。
当前表中有50封邮件执行存储过程后,我检查了msdb表sysmails_event_log,sysmails_faileditems和sysmails_sentitems,我发现只发送了前12封邮件,其余的都失败了,event_log中的错误消息是:
由于邮件服务器故障,无法将邮件发送给收件人。(使用帐户1发送邮件(2009-12-01T16:55:11)。异常消息:无法向邮件服务器发送邮件。(操作已超时。))
我检查了13号邮件和后来的邮件,没有发现任何问题,所以我再次尝试执行该程序,这次它发送到第14封邮件,其余的失败并出现相同的错误,所以我更改了程序,让它选择从第15号邮件开始的邮件(好像它将从记录15发送到50),并对其进行测试,这次它发送到第13封邮件,我从27到50选择并执行,再次发送到第12邮件。
我不明白这里发生了什么,一次只发送12-14封邮件的行为是什么。
有人能在这方面帮我吗?
提前感谢
发布于 2009-12-07 00:29:18
SMTP服务器位于何处?您是否检查过是否可以在完全不涉及SQL server的情况下通过SMTP服务器一次发送12封以上的电子邮件?看起来问题不是SQL server,而是SMTP服务器上的某种策略。在数据库服务器和SMTP服务器之间的防火墙或其他网络设备上也可能存在某种滥用预防措施。您是否考虑过在数据库服务器上设置SMTP服务,然后设置数据库邮件,以便它使用本地SMTP服务器,而不是通过网络(并且可能会遇到上面提到的一个或多个策略)?当然,您应该安全地设置SMTP,确保只允许来自本地计算机的连接。
发布于 2015-01-10 04:19:10
我通过两件事解决了这种情况:
数据库邮件服务Profile
希望它适用于任何遇到同样情况的人。
发布于 2019-05-03 17:27:54
我也遇到了这个问题。我的解决方案是设置邮件发送列表的延迟。问题就解决了。
WHILE @@FETCH_STATUS = 0
BEGIN
WAITF OR DELAY '000:00:10'https://stackoverflow.com/questions/1854853
复制相似问题