SQL Serverでメールを送信しようとしても配信されない場合は、sysmail_faileditems
を確認してみてください。 ビュー。
例
失敗したメールをチェックする例を次に示します。 msdb
で実行する必要があることに注意してください データベース。
SELECT * FROM msdb.dbo.sysmail_faileditems;
結果(垂直出力を使用):
mailitem_id | 1 profile_id | 1 recipients | [email protected] copy_recipients | NULL blind_copy_recipients | NULL subject | SQL Server Agent Job: FAILED body | Your favorite SQL Server Agent job just failed body_format | TEXT importance | NORMAL sensitivity | NORMAL file_attachments | NULL attachment_encoding | MIME query | NULL execute_query_database | NULL attach_query_result_as_file | 0 query_result_header | 1 query_result_width | 256 query_result_separator | exclude_query_output | 0 append_query_error | 0 send_request_date | 2020-08-24 02:40:48.093 send_request_user | sa sent_account_id | NULL sent_status | failed sent_date | 2020-08-24 02:41:53.000 last_mod_date | 2020-08-24 02:41:53.290 last_mod_user | sa
ここでは、すべての列を表示するために横にスクロールする必要がないように、垂直出力を使用しました。
この場合、失敗したメールを1通表示しています。実際に失敗したメールは2つありましたが、結果を1つだけ表示する方が簡潔であると判断しました。
私の場合、メールを送信するコードで間違ったメールサーバーを使用していたため、メールが失敗しました。正しいメールサーバーを使用するようにコードを更新するとすぐに、後続のすべての電子メールが正常に送信されました。ただし、これによってすでに失敗したものは変更されないため、sysmail_faileditems
に残ります。 ビュー。
sysmail_unsentitems
をクエリできます 未送信の電子メールのリストを返します(まだ送信されていないもので、必ずしも失敗したわけではありません)。
sysmail_sentitems
をクエリすることもできます 送信されたすべてのメールを取得します。
sysmail_allitems
をクエリすることもできます すべてのメール(送信済み、未送信、失敗、再試行)を取得します。