Om du försöker skicka e-post med SQL Server men den inte levereras, prova att kontrollera sysmail_faileditems
visa.
Exempel
Här är ett exempel på hur du letar efter misslyckad e-post. Observera att den måste köras på msdb
databas.
SELECT * FROM msdb.dbo.sysmail_faileditems;
Resultat (med vertikal utdata):
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
Jag använde vertikal utmatning här så att du inte behöver rulla i sidled för att se alla kolumner.
I det här fallet visar jag ett misslyckat e-postmeddelande. Jag hade faktiskt två misslyckade e-postmeddelanden men jag bestämde mig för att det var mer kortfattat att bara visa ett resultat.
I mitt fall hade jag använt fel e-postserver i koden som skickar mejlet, och mejlen misslyckades. Så snart jag uppdaterade koden för att använda rätt e-postserver skickades alla efterföljande e-postmeddelanden framgångsrikt. Detta ändrar dock inte de som redan hade misslyckats, och därför finns de kvar i sysmail_faileditems
visa.
Du kan fråga sysmail_unsentitems
för att returnera en lista över osända e-postmeddelanden (de som ännu inte har skickats, inte nödvändigtvis misslyckade).
Du kan också fråga sysmail_sentitems
för att få alla skickade e-postmeddelanden.
Du kan också fråga sysmail_allitems
för att få alla e-postmeddelanden (skickade, ej skickade, misslyckades och försöker igen).