我正在尝试(未成功)使用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
那么,出了什么问题?
答案 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
字段。