Wanneer u e-mails vanuit SQL Server verzendt, kunt u controleren op niet-verzonden e-mail met de sysmail_unsentitems
bekijken.
Voorbeeld
Hier is een voorbeeld van het controleren op niet-verzonden e-mail. Merk op dat het moet worden uitgevoerd op de msdb
database.
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Resultaat (met verticale uitvoer):
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
Ik heb hier verticale uitvoer gebruikt, zodat je niet zijwaarts hoeft te scrollen om alle kolommen te zien.
In dit geval is er één niet-verzonden e-mail. Ik heb deze query toevallig uitgevoerd onmiddellijk na het uitvoeren van msdb.dbo.sp_send_dbmail
om deze mail te versturen.
Het bleek dat de e-mail onmiddellijk werd verzonden nadat ik de bovenstaande resultaten had gekopieerd, en als ik die query nu opnieuw uitvoer, krijg ik nul resultaten (d.w.z. er zijn geen niet-verzonden e-mails).
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Resultaat:
(0 rows affected)
Echter, alleen omdat er geen niet-verzonden e-mails zijn, betekent dit niet dat er geen zijn die zijn mislukt.
U kunt sysmail_faileditems
. opvragen om een lijst met mislukte e-mails te retourneren.
U kunt ook sysmail_sentitems
. opvragen om alle verzonden e-mails te ontvangen.
U kunt ook sysmail_allitems
. opvragen om alle e-mails te ontvangen (verzonden, niet-verzonden, mislukt en opnieuw geprobeerd).