我已经配置了数据库邮件,用于从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和laters,我没有发现它们有任何问题,所以我再次尝试执行该程序,这次它发送到第14封电子邮件,其余的都失败了同样的错误所以我改变了程序并让它选择了邮件从邮件号码开始15 (好像它会从15号记录发送到50号)并进行测试,这次它发送到第13封电子邮件,我选择从27到50并执行,再次发送到第1天12。
我不明白这里发生了什么,这种发送邮件的行为一次只能在12-14封邮件的范围内。
有人可以帮我吗?
提前致谢
答案 0 :(得分:1)
SMTP服务器位于何处?您是否检查过是否可以通过该SMTP服务器一次发送超过12封电子邮件而根本不涉及SQL Server?看起来问题不是SQL Server,而是SMTP服务器上的某种策略。在数据库服务器和SMTP服务器之间的防火墙或其他网络设备上可能存在某种滥用防范。您是否考虑过在数据库服务器上设置SMTP服务,然后设置数据库邮件以使其使用本地SMTP服务器而不是通过网络(并可能遇到上面提到的策略或策略)?当然,您应该安全地设置SMTP,确保只允许来自本地计算机的连接。
答案 1 :(得分:0)
我解决了这种情况做两件事:
希望它适用于那些遇到同样情况的人。
答案 2 :(得分:0)
我也遇到了这个问题。我的解决方案是设置电子邮件发送列表的延迟。问题已解决。
WHILE @@FETCH_STATUS = 0
BEGIN
WAITF OR DELAY '000:00:10'