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' 電子メール メッセージの「返信先アドレス」の値です。有効な値として 1 つの電子メール アドレスのみを受け入れます。これは、メール プロファイルの設定を上書きするために使用されるオプションのパラメーターです。このパラメーターは 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 に答える