ユーザーの作成時にメールを送信する簡単な手順があります。ユーザー名とフルネームのフィールドに入力するために、構成テーブルからメールの本文を読み込んでから、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 は空白になります。2 つの 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 データベースの送信済みメール テーブルを確認すると、本文が null です。
私がやろうとしているのは、replace ステートメントでフィールドを正しく置き換えることです。私は何を間違っていますか?