Quando invii e-mail da SQL Server, puoi controllare la posta non inviata con sysmail_unsentitems
visualizza.
Esempio
Ecco un esempio di controllo della posta non inviata. Nota che deve essere eseguito su msdb
banca dati.
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Risultato (usando l'output verticale):
mailitem_id | 4 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 04:11:19.300 send_request_user | sa sent_account_id | NULL sent_status | unsent sent_date | NULL last_mod_date | 2020-08-24 04:11:19.300 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, c'è un'e-mail non inviata. Mi è capitato di eseguire questa query immediatamente dopo l'esecuzione di msdb.dbo.sp_send_dbmail
per inviare questa mail.
Come si è scoperto, la posta è stata inviata immediatamente dopo aver copiato i risultati di cui sopra e ora quando eseguo di nuovo quella query, ottengo zero risultati (cioè non ci sono email non inviate).
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Risultato:
(0 rows affected)
Tuttavia, solo perché non ci sono e-mail non inviate, non significa che non ce ne siano di fallite.
Puoi interrogare sysmail_faileditems
per restituire un elenco di email 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).