Jeśli próbujesz wysłać pocztę za pomocą SQL Server, ale nie jest ona dostarczana, spróbuj sprawdzić sysmail_faileditems
widok.
Przykład
Oto przykład sprawdzania nieudanej poczty. Zauważ, że musi być uruchomiony na msdb
baza danych.
SELECT * FROM msdb.dbo.sysmail_faileditems;
Wynik (przy użyciu wyjścia pionowego):
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
Użyłem tutaj wyjścia pionowego, aby nie trzeba było przewijać na boki, aby zobaczyć wszystkie kolumny.
W tym przypadku pokazuję jeden nieudany e-mail. Właściwie miałem dwa nieudane e-maile, ale zdecydowałem, że bardziej zwięzłe będzie pokazanie tylko jednego wyniku.
W moim przypadku użyłem złego serwera pocztowego w kodzie wysyłającym wiadomość e-mail i e-maile się nie powiodły. Jak tylko zaktualizowałem kod, aby używał prawidłowego serwera pocztowego, wszystkie kolejne e-maile zostały pomyślnie wysłane. Nie zmienia to jednak tych, które już się nie powiodły i dlatego pozostają w sysmail_faileditems
widok.
Możesz zapytać sysmail_unsentitems
aby zwrócić listę niewysłanych e-maili (tych, które nie zostały jeszcze wysłane, niekoniecznie nieudane).
Możesz także zapytać sysmail_sentitems
aby otrzymać wszystkie wysłane e-maile.
Możesz także zapytać sysmail_allitems
aby otrzymać wszystkie e-maile (wysłane, niewysłane, nieudane i ponawiane).