Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Den här artikeln beskriver hur du kontrollerar statusen för det e-postmeddelande som skickas med Hjälp av Database Mail i SQL Server med hjälp av Transact-SQL.
- Database Mail behåller kopior av utgående e-postmeddelanden och visar dem i vyerna
sysmail_allitems,sysmail_sentitems,sysmail_unsentitems,sysmail_faileditemsimsdbdatabasen. - Det externa programmet Database Mail loggar aktiviteten och visar loggen via Händelseloggen för Windows-program och
sysmail_event_logvyn imsdbdatabasen. - E-postmeddelanden har en av fyra möjliga statusar: skickade, ej, försök igenoch misslyckades.
Om du vill kontrollera statusen för ett e-postmeddelande kör du en fråga mot msdb.dbo.sysmail_event_log systemvyn.
Använd Transact-SQL för att se status för det skickade e-postmeddelandet som skickades med hjälp av Database Mail
Välj från tabellen
sysmail_allitemsoch specificera de meddelanden som intresserar genom att användamailitem_idellersent_status.Om du vill kontrollera statusen som returneras från det externa programmet för e-postmeddelandena, ansluter du
sysmail_allitemstillsysmail_event_log-vyn på kolumnenmailitem_id.Som standard loggar inte det externa programmet information om meddelanden som har skickats. Om du vill logga alla meddelanden anger du loggningsnivån till utförlig med hjälp av sidan Konfigurera systemparametrar i konfigurationsguiden för Database Mail.
I följande exempel visas information om eventuella e-postmeddelanden som skickas till danw som det externa programmet inte kunde skicka. Instruktionen visar ämnet, datum och tid då det externa programmet inte kunde skicka meddelandet och felmeddelandet från Database Mail-loggen.
USE msdb ;
GO
-- Show the subject, the time that the mail item row was last
-- modified, and the log information.
-- Join sysmail_faileditems to sysmail_event_log
-- on the mailitem_id column.
-- In the WHERE clause list items where danw was in the recipients,
-- copy_recipients, or blind_copy_recipients.
-- These are the items that would have been sent
-- to danw.
SELECT items.subject,
items.last_mod_date
,l.description
FROM dbo.sysmail_faileditems AS items
INNER JOIN dbo.sysmail_event_log AS l
ON items.mailitem_id = l.mailitem_id
WHERE items.recipients LIKE '%danw%'
OR items.copy_recipients LIKE '%danw%'
OR items.blind_copy_recipients LIKE '%danw%';
GO