我有一个简单的程序,可以在创建用户时发送电子邮件。为了填充用户名和全名字段,我从配置表加载电子邮件正文,然后使用 REPLACE 替换占位符。
SELECT @BodyMessage = ConfigValue , @Email = email
FROM dbo.ConfigValues
WHERE ConfigName = 'ADNotification'
IF @Email = '' SET @Email = @DefaultEmail
SET @BodyMessage = REPLACE(@BodyMessage, 'FullName', @FullName)
SET @BodyMessage = REPLACE(@BodyMessage, 'UserName', @UserName)
Select @BodyMessage
SET @SubjectLine = 'User Account Created'
EXEC msdb.dbo.sp_send_dbmail @profile_name='EUI',
@recipients=@Email, @subject=@SubjectLine,
@body_format = 'TEXT', @body= @BodyMessage
运行时,@BodyMessage 为空白。如果我注释掉两个 REPLACE 语句,电子邮件发送就好了(像这样)
SELECT @BodyMessage = ConfigValue , @Email = email
FROM dbo.ConfigValues
WHERE ConfigName = 'ADNotification'
IF @Email = '' SET @Email = @DefaultEmail
--SET @BodyMessage = REPLACE(@BodyMessage, 'FullName', @FullName)
--SET @BodyMessage = REPLACE(@BodyMessage, 'UserName', @UserName)
Select @BodyMessage
SET @SubjectLine = 'User Account Created'
EXEC msdb.dbo.sp_send_dbmail @profile_name='EUI',
@recipients=@Email, @subject=@SubjectLine,
@body_format = 'TEXT', @body= @BodyMessage
我最近根据其他一些反馈添加了 SELECT @Bodymessage 语句;无论有没有语句,代码的运行方式都相同。如果我检查 msdb 数据库中的已发送邮件表,则正文为空。
我要做的是让替换语句正确替换字段。我究竟做错了什么?