1

我正在尝试(不成功)使用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

那么,有什么问题呢?

4

2 回答 2

2

我可能发现了问题...

@reply_to=@email; 

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

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

于 2012-06-27T17:43:17.953 回答
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场地。

于 2012-06-27T17:46:51.853 回答