Hvis du forsøger at sende mail med SQL Server, men den ikke bliver leveret, kan du prøve at tjekke sysmail_faileditems
se.
Eksempel
Her er et eksempel på kontrol for mislykkede e-mails. Bemærk, at det skal køres på msdb
database.
SELECT * FROM msdb.dbo.sysmail_faileditems;
Resultat (ved hjælp af lodret output):
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
Jeg brugte lodret output her, så du ikke behøver at rulle sidelæns for at se alle kolonner.
I dette tilfælde viser jeg en mislykket e-mail. Jeg havde faktisk to mislykkede e-mails, men jeg besluttede, at det var mere kortfattet kun at vise ét resultat.
I mit tilfælde havde jeg brugt den forkerte mailserver i koden, der sender mailen, og mails mislykkedes. Så snart jeg opdaterede koden til at bruge den korrekte mailserver, blev alle efterfølgende e-mails sendt med succes. Dette ændrer dog ikke på dem, der allerede havde fejlet, og derfor forbliver de i sysmail_faileditems
se.
Du kan forespørge sysmail_unsentitems
for at returnere en liste over ikke-sendte e-mails (dem, der endnu ikke er sendt, ikke nødvendigvis mislykkedes).
Du kan også forespørge sysmail_sentitems
for at få alle sendte e-mails.
Du kan også forespørge sysmail_allitems
for at få alle e-mails (sendte, ikke sendt, mislykkedes og forsøger igen).