我正在寻找一种方法来检查排队使用的特定电子邮件sp_send_dbmail
是否最终从我们的 Exchange 服务器成功发送。我查看了系统表msdb.dbo.sysmail_mailitems
和msdb.dbo.sysmail_log
. msdb.dbo.sysmail_log
似乎两者中更有帮助;具体来说,它的description
专栏。从我到目前为止进行的测试来看,似乎每当发生错误时,description
列中都会出现以下格式的消息:
由于邮件服务器故障,无法将邮件发送给收件人。(使用帐户 3 (2012-11-01T11:28:04) 发送邮件。异常消息:无法将邮件发送到邮件服务器。(邮箱不可用。服务器响应为:5.7.1 无法为 thisemail@email.com 中继) . )
这包含在共享相同的其他行中process_id
。随附记录的描述是
DatabaseMail 进程已启动
和
DatabaseMail 进程正在关闭
如果成功发送电子邮件,则表中记录相同的 2 行,但它们之间没有封闭的行。
因此,如果我发送成功,表格中会出现以下内容
如果我发送失败,日志会记录这个
如果发送失败或发送成功,是否还有其他记录条目的实例?例如,是否有可能有 4 行用于发送的条目(2 行说明它何时启动和何时关闭,2 行说明电子邮件已成功发送)。我没有发现任何与上面列出的模式不同的日志记录,但在我根据这个假设编写逻辑之前想确定一下。