sp_send_dbmail不起作用

时间:2012-06-27 17:28:00

标签: sql-server sql-server-2008 tsql

我正在尝试(未成功)使用sp_send_dbmail (Transact-SQL)

@recipients 值被称为以分号分隔的电子邮件地址列表,用于发送邮件。

因此,在我的数据表的Email列中,我应该做的就是更新要发送给多个收件人的行:

旧: JoeP@jp2code.net

新功能: JoeP@jp2code.net; personB@jp2code.net

没有错误,但没有电子邮件发出。

我用来调用sp_send_dbmail的代码在我的存储过程中没有改变:

IF (0 < (SELECT COUNT(ID) FROM #Email)) BEGIN
    SELECT TOP 1 @ID=ID, @email=Email FROM #Email
    EXEC msdb.dbo.sp_send_dbmail @recipients=@email, @subject=@subj, @body=@html, @body_format='HTML', @from_address='no-reply@jp2code.net', @reply_to=@email;
    DELETE #Email WHERE @email=Email
END

那么,出了什么问题?

2 个答案:

答案 0 :(得分:2)

我可能已经发现了这个问题......

@reply_to=@email; 

[@ reply_to =]'reply_to' 是电子邮件的“回复地址”的值。它只接受一个电子邮件地址作为有效值。这是一个可选参数,用于覆盖邮件配置文件中的设置。此参数的类型为varchar(MAX)。 SMTP secuirty设置确定是否接受这些覆盖。如果未指定参数,则默认值为NULL。

这解释了为什么它使用单个地址,但不适用于多个地址。

答案 1 :(得分:1)

愚蠢的错误。

仔细看看SQL:

IF (0 < (SELECT COUNT(ID) FROM #Email)) BEGIN
    SELECT TOP 1 @ID=ID, @email=Email FROM #Email
    EXEC msdb.dbo.sp_send_dbmail
            @recipients=@email, 
            @subject=@subj, 
            @body=@html, 
            @body_format='HTML', 
            @from_address='no-reply@jp2code.net', 
            @reply_to=@email;
    DELETE #Email WHERE @email=Email
END

现在每个人都能看到问题吗?

提示:查看reply_to字段。