sp_send_dbmail
を使用してキューに入れられた特定の電子メールが最終的に Exchange サーバーから正常に送信されたかどうかを確認する方法を探しています。システム テーブルmsdb.dbo.sysmail_mailitems
とmsdb.dbo.sysmail_log
. msdb.dbo.sysmail_log
2 つのうちのほうが役立つようです。具体的には、そのdescription
列。これまでに行ったテストから、エラーが発生するたびに、次の形式のメッセージがdescription
列に表示されるようです。
メールサーバーに障害が発生したため、メールを受信者に送信できませんでした。(アカウント 3 を使用してメールを送信 (2012-11-01T11:28:04). 例外メッセージ: メール サーバーにメールを送信できません。(メールボックスを利用できません。サーバーの応答は: 5.7.1 Unable to Relay for thisemail@email.com) . )
これは、同じ を共有する他の行に囲まれていますprocess_id
。同封するレコードの説明は次のとおりです。
DatabaseMail プロセスが開始されました
と
DatabaseMail プロセスがシャットダウンしています
電子メールが正常に送信された場合、同じ 2 つの行がテーブルに記録されますが、その間に行が囲まれていません。
送信が成功すると、表に次のように表示されます
送信に失敗した場合、ログにはこれが記録されます
送信が失敗した場合、または送信が成功した場合にエントリをログに記録する方法の他の例はありますか? たとえば、送信用に 4 行のエントリがある可能性があります (2 行が開始時と終了時を示し、2 行が電子メールが正常に送信されたことを示します)。上記のパターンから逸脱したログ レコードは見つかりませんでしたが、この仮定に基づいてロジックを記述する前に確認したいと思います。