Si vous utilisez Database Mail dans SQL Server, vous pouvez utiliser le sysmail_sentitems
view pour renvoyer une liste de tous les e-mails envoyés par Database Mail.
Exemple
Voici un exemple de retour de tous les e-mails envoyés. Notez que cela doit être fait sur le msdb
base de données.
SELECT * FROM msdb.dbo.sysmail_sentitems;
Résultat (en utilisant la sortie 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
J'ai utilisé la sortie verticale ici pour que vous n'ayez pas besoin de faire défiler latéralement pour voir toutes les colonnes.
J'affiche également uniquement la première ligne (même si deux lignes ont été renvoyées), pour rester concis.
Le voici à nouveau, sauf que cette fois je vais passer en sortie horizontale et afficher les deux lignes. De plus, je ne spécifierai que quelques colonnes.
SELECT
mailitem_id,
sent_status,
send_request_date
FROM msdb.dbo.sysmail_allitems;
Résultat (en utilisant la sortie 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 | +---------------+---------------+-------------------------+-------------------------+
Vous pouvez interroger sysmail_unsentitems
pour renvoyer une liste des e-mails non envoyés (ceux qui n'ont pas encore été envoyés, pas nécessairement en échec).
Vous pouvez également interroger sysmail_faileditems
pour obtenir tous les e-mails ayant échoué.
Vous pouvez également interroger sysmail_allitems
pour obtenir tous les e-mails (envoyés, non envoyés, échoués et réessayés).