Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: SQL Server Управляемый экземпляр SQL Azure
В этой статье описывается, как устранить проблему, из-за которой сообщения электронной почты из Database Mail успешно помещаются в очередь, но сообщения не доставляются.
Диагностика проблемы
Внешняя программа Database Mail регистрирует действия электронной почты в msdb базе данных.
Во-первых, чтобы убедиться, что компонент Database Mail включен, используйте Database Mail XPs (параметр конфигурации сервера) в
sp_configureсистемной хранимой процедуре, как в следующем примере:EXEC sp_configure 'show advanced', 1; RECONFIGURE; EXEC sp_configure; GOЗатем выполните следующую инструкцию в
msdbбазе данных, чтобы проверить состояние очереди почты:EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';Подробное описание столбцов см. в разделе sysmail_help_queue_sp (Transact-SQL).
sysmail_event_logПроверьте представление действия. В этом представлении должна находиться запись, удостоверяющая, что запущена внешняя программа компонента Database Mail. Если в представленииsysmail_event_logнет записи, см. симптом "Сообщения в очереди, нет записей" вsysmail_event_log.Если в
sysmail_event_logпредставлении возникают ошибки, устраните конкретную ошибку. Проверьтеsysmail_allitemsпросмотр, чтобы узнать статус сообщений.
Состояние сообщения — не отправлено
Состояние неотправлено указывает, что Database Mail внешняя программа еще не обработала сообщение электронной почты.
Внешняя программа Database Mail может отстать от обработки сообщений; Скорость обработки сообщений внешней программы зависит от сетевых условий, времени ожидания повторных попыток, объема сообщений и емкости SMTP-сервера. Если проблема остается, попробуйте отсылать сообщения из нескольких профилей и с нескольких SMTP-серверов. Проверьте отправленную загрузку электронной почты из SQL Server, чтобы убедиться, что отправленные сообщения действительны и предназначены.
Проверьте последнюю дату успешной отправки сообщений. Если последняя успешная доставка произошла некоторое время назад, проверьте sysmail_event_log вид, чтобы убедиться, что внешняя программа успешно запущена службой Service Broker. Если последняя попытка активировать программу завершилась ошибкой, убедитесь, что внешняя программа компонента Database Mail находится в верном каталоге и учетная запись службы SQL Server имеет разрешения на ее запуск. Проверьте журнал событий приложения Windows для ошибок, связанных с Database Mail.
Примечание.
Чтобы удалить старые неотправленные сообщения, подождите до тех пор, пока недоставленные сообщения не станут самыми старыми в очереди, а затем используйте системную хранимую процедуру msdb.dbo.sysmail_delete_mailitems_sp для их удаления.
Состояние сообщения — идет повтор
Состояние повторных попыток указывает, что Database Mail попыталась доставить сообщение на SMTP-сервер, но не удалось. Обычно причиной служат ошибки в сети, сбой SMTP-сервера или неправильная конфигурация учетной записи компонента Database Mail. В конечном итоге сообщение должно быть успешно выполнено или завершится с ошибкой и опубликовать сообщение в журнал событий Windows для приложений.
Состояние сообщения — отправлено
Состояние отправлено означает, что внешняя программа компонента Database Mail успешно доставила электронное сообщение SMTP-серверу.
Если у получателя сообщение не появилось, то это означает, что SMTP-сервер принял сообщение от компонента Database Mail, но не смог доставить его получателю. Проверьте журналы SMTP-сервера или свяжитесь с его администратором. SMTP-сервер также можно проверить с помощью другого почтового клиента, например Outlook Express.
Состояние сообщения — сбой
Состояние "Сбой" означает, что внешняя программа компонента Database Mail не смогла доставить электронное сообщение SMTP-серверу.
В этом случае системное msdb.dbo.sysmail_event_log представление содержит подробные сведения из внешней программы. Пример запроса, который объединяет sysmail_faileditems и sysmail_event_log для извлечения подробных сообщений об ошибках, см. в разделе "Проверка состояния сообщений электронной почты, отправленных с помощью Database Mail". Наиболее частая причина ошибок — неверный адрес получателя, проблемы в сети, из-за которых внешняя программа не может использовать учетные записи отработки отказа. Проблемы SMTP-сервера также могут быть причиной того, что сообщения сервером отклоняются. Чтобы выяснить, где происходит ошибка, в мастере настройки компонента Database Mail измените значение параметра Уровень ведения журнала на Подробный и отправьте тестовое сообщение.