Я ищу способ проверить, будут ли в конечном итоге sp_send_dbmail
очереди электронной почты с помощью 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 Не удалось передать для [email protected]).)
Это связано с другими строками, которые имеют один и тот же process_id
. Описание прилагаемых записей
Процесс DatabaseMail запущен
а также
Процесс DatabaseMail закрывается
Если сообщение электронной почты было успешно отправлено, в таблице записаны те же 2 строки, за исключением того, что между ними нет закрытых строк.
Поэтому, если у меня есть успешная отправка, в таблице появляется следующее:
и если у меня есть отказ отправки, журнал регистрирует это
Существуют ли другие экземпляры того, как записи могут регистрироваться, если сбой отправки или успешная передача? Например, возможно ли, что есть 4 строки записей для отправки (2 прилагается, когда он был запущен и когда он закрывается, и 2 заключенных, в которых сообщение электронной почты было успешно отправлено). Я не нашел записей журналов, которые отличались от приведенного выше шаблона, но хотелось бы убедиться, прежде чем писать логику на основе этого предположения.