Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Verifica posta elettronica non riuscita in SQL Server (T-SQL)

Se stai tentando di inviare posta con SQL Server ma non viene recapitata, prova a controllare sysmail_faileditems visualizza.

Esempio

Ecco un esempio di controllo della posta non riuscita. Nota che deve essere eseguito su msdb banca dati.

SELECT * FROM msdb.dbo.sysmail_faileditems;

Risultato (usando l'output verticale):

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

Ho usato l'output verticale qui in modo che non sia necessario scorrere lateralmente per vedere tutte le colonne.

In questo caso, sto mostrando un'e-mail non riuscita. In realtà ho ricevuto due email non riuscite, ma ho deciso che era più conciso mostrare un solo risultato.

Nel mio caso, avevo utilizzato il server di posta sbagliato nel codice che invia l'e-mail e le e-mail non sono riuscite. Non appena ho aggiornato il codice per utilizzare il server di posta corretto, tutte le e-mail successive sono state inviate correttamente. Tuttavia, questo non cambia quelli che avevano già fallito e, quindi, rimangono nel sysmail_faileditems visualizza.

Puoi interrogare sysmail_unsentitems per restituire un elenco di email non inviate (quelle che devono essere ancora inviate, non necessariamente non riuscite).

Puoi anche interrogare sysmail_sentitems per ricevere tutte le email inviate.

Puoi anche interrogare sysmail_allitems per ricevere tutte le email (inviate, non inviate, non riuscite e tentativi).