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

Restituire un elenco di messaggi di posta elettronica inviati da SQL Server Database Mail (T-SQL)

Se utilizzi Posta database in SQL Server, puoi utilizzare sysmail_sentitems visualizzare per restituire un elenco di tutti i messaggi di posta elettronica inviati da Posta elettronica database.

Esempio

Ecco un esempio di restituzione di tutte le email inviate. Nota che questo deve essere fatto su msdb banca dati.

SELECT * FROM msdb.dbo.sysmail_sentitems;

Risultato (usando l'output verticale):

mailitem_id                 | 3
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 03:58:57.887
send_request_user           | sa
sent_account_id             | 1
sent_status                 | sent
sent_date                   | 2020-08-24 03:59:01.000
last_mod_date               | 2020-08-24 03:59:01.543
last_mod_user               | sa

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

Sto anche visualizzando solo la prima riga (anche se sono state restituite due righe), per mantenere le cose concise.

Eccolo di nuovo, tranne che questa volta passerò all'output orizzontale e visualizzerò entrambe le righe. Inoltre, specificherò solo alcune colonne.

SELECT
    mailitem_id,
    sent_status,
    send_request_date
FROM msdb.dbo.sysmail_allitems;

Risultato (usando l'output verticale):

+---------------+---------------+-------------------------+-------------------------+
| mailitem_id   | sent_status   | send_request_date       | sent_date               |
|---------------+---------------+-------------------------+-------------------------|
| 3             | sent          | 2020-08-24 03:58:57.887 | 2020-08-24 03:59:01.000 |
| 4             | sent          | 2020-08-24 04:11:19.300 | 2020-08-24 04:11:22.000 |
+---------------+---------------+-------------------------+-------------------------+

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

Puoi anche interrogare sysmail_faileditems per ricevere tutte le email non riuscite.

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