Condividi tramite


Controllare lo stato di messaggi di posta elettronica inviati con Posta elettronica database

In questo argomento viene illustrato come controllare lo stato del messaggio di posta elettronica inviato utilizzando Posta elettronica database in SQL Server 2012 tramite Transact-SQL.

  • Prima di iniziare:  

  • Per visualizzare lo stato della posta elettronica inviata utilizzando Posta elettronica database, utilizzando Transact-SQL

Prima di iniziare

Posta elettronica database conserva copie dei messaggi di posta elettronica in uscita e le visualizza nelle viste sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditems del database msdb. Il programma esterno Posta elettronica database registra l'attività e visualizza il log tramite il registro eventi applicazioni di Windows e la vista sysmail_event_log nel database msdb. Per controllare lo stato di un messaggio di posta elettronica, è necessario eseguire una query su questa tabella. I messaggi di posta elettronica possono avere uno dei quattro stati seguenti: inviato, non inviato, nuovo tentativo in corso e non riuscito.

Utilizzo di Transact-SQL

Per visualizzare lo stato della posta elettronica inviata utilizzando Posta elettronica

[!NOTA]

Per un esempio di questa procedura, vedere Esempio (Transact-SQL), più avanti in questa sezione.

  1. Selezionare dalla tabella sysmail_allitems specificando i messaggi di interesse tramite mailitem_id o sent_status.

  2. Per controllare lo stato restituito dal programma esterno per i messaggi di posta elettronica, unire in join sysmail_allitems alla vista sysmail_event_log nella colonna mailitem_id, come illustrato nella sezione seguente.

    Per impostazione predefinita, il programma esterno non registra le informazioni relative ai messaggi inviati correttamente. Per registrare tutti i messaggi, impostare il livello di registrazione su dettagliato utilizzando la pagina Configurazione parametri di sistema di Configurazione guidata Posta elettronica database.

Esempio (Transact-SQL)

Nell'esempio seguente sono elencate le informazioni relative a eventuali messaggi di posta elettronica inviati a danw che il programma esterno non è stato in grado di inviare correttamente. L'istruzione elenca oggetto, data e ora del mancato invio del messaggio da parte del programma esterno e il messaggio di errore dal log di Posta elettronica database.

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

[Torna all'inizio]

Vedere anche

Concetti

Controlli e registrazione di Posta elettronica database