Risoluzione dei problemi relativi a Posta elettronica database: Posta elettronica accodata, ma non recapitata
In questo argomento vengono descritte le procedure di risoluzione dei problemi relativi al mancato recapito di messaggi di posta elettronica inseriti senza errori in una coda.
Diagnosi del problema
Il programma esterno Posta elettronica database registra le attività di posta elettronica nel database msdb.
Verificare innanzitutto se Posta elettronica database è abilitato tramite l'opzione descritta in Opzione Database Mail XPs della stored procedure di sistema sp_configure.
Eseguire quindi l'istruzione seguente nel database msdb per verificare lo stato della coda della posta elettronica:
sysmail_help_queue_sp @queue_type = 'Mail' ;
Per una descrizione dettagliata delle colonne, vedere la sezione relativa al set di risultati in sysmail_help_queue_sp (Transact-SQL).
Verificare l'attività della vista sysmail_event_log. La vista dovrebbe contenere una voce che specifica che il programma esterno Posta elettronica database è stato avviato. Se la vista sysmail_event_log non contiene voci, vedere il sintomo Messages Queued, No Entries in sysmail_event_log. Se la vista sysmail_event_log contiene errori, risolvere il problema specifico.
Se la vista sysmail_event_log contiene errori, verificare lo stato dei messaggi nella vista sysmail_allitems.
Stato del messaggio non inviato
Lo stato non inviato indica che il programma esterno Posta elettronica database non ha ancora elaborato il messaggio. È possibile che il programma sia in ritardo con l'elaborazione dei messaggi. La velocità di elaborazione dipende dalle condizioni della rete, dal timeout fra i tentativi di invio, dal volume dei messaggi e dalla capacità del server SMTP. Se il problema persiste, è consigliabile utilizzare più di un profilo per la distribuzione di messaggi fra più server SMTP.
Controllare la data dell'ultimo recapito senza errori. Se è trascorso del tempo dall'ultimo recapito senza errori, controllare la vista sysmail_event_log per verificare che il programma esterno sia stato avviato in modo corretto da Service Broker. Se durante l'ultimo tentativo il programma esterno non è stato avviato, verificare che il programma esterno Posta elettronica database si trovi nella directory corretta e che l'account del servizio SQL Server disponga dell'autorizzazione per l'avvio dell'eseguibile.
Nota
Per eliminare i messaggi precedenti non inviati, attendere fino a quando i messaggi non recapitabili non diventano i meno recenti nella coda e quindi utilizzare sysmail_delete_mailitems_sp per eliminarli.
Stato del messaggio nuovo tentativo in corso
Questo stato indica che Posta elettronica database ha tentato di recapitare il messaggio al server SMTP, ma l'operazione non è riuscita. In genere, questo problema è causato da un'interruzione di rete, un errore sul server SMTP o un account di Posta elettronica database configurato in modo non corretto. Alla fine il messaggio dovrebbe riuscire o non riuscire e pubblicare un messaggio nel log eventi.
Stato del messaggio inviato
Lo stato inviato indica che il programma esterno Posta elettronica database ha recapitato correttamente il messaggio al server SMTP. Se il messaggio non è giunto a destinazione, il server SMTP ha accettato il messaggio da Posta elettronica database, ma non lo ha recapitato al destinatario finale. Verificare i log del server SMTP, oppure rivolgersi all'amministratore del server SMTP. È inoltre possibile eseguire un test del server di posta elettronica SMTP utilizzando un altro client, ad esempio Outlook Express.
Stato del messaggio non riuscito
Lo stato non riuscito indica che il programma esterno Posta elettronica database non è stato in grado di recapitare il messaggio al server SMTP. In questo caso, la vista sysmail_event_log contiene informazioni dettagliate provenienti dal programma esterno. Per una query di esempio che unisce sysmail_faileditems e sysmail_event_log allo scopo di recuperare messaggi di errore dettagliati, vedere Procedura: Controllo dello stato di messaggi di posta elettronica inviati con Posta elettronica database (Transact-SQL). Le cause di errore più frequenti sono la presenza di un indirizzo di destinazione errato oppure problemi di rete che impediscono al programma esterno di raggiungere uno o più account di failover. È inoltre possibile che la posta venga respinta per problemi specifici a livello del server SMTP. Utilizzando Configurazione guidata posta elettronica database, modificare l'impostazione dell'opzione Livello di registrazione su Dettagliato e inviare un messaggio di prova per individuare il punto di errore.