Periksa Status Pesan Email yang Dikirim Dengan Email Database

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Topik ini menjelaskan cara memeriksa status pesan email yang dikirim menggunakan Email Database di SQL Server dengan menggunakan Transact-SQL.

  • Sebelum Anda mulai:

  • Untuk menampilkan status email yang dikirim menggunakan Email Database, menggunakan:Transact-SQL

Sebelum Anda mulai

Email Database menyimpan salinan pesan email keluar dan menampilkannya di tampilan sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditemsdatabase msdb . Aktivitas log program eksternal Email Database dan menampilkan log melalui Log Peristiwa Aplikasi Windows dan tampilan sysmail_event_log dalam database msdb . Untuk memeriksa status pesan email, jalankan kueri terhadap tampilan ini. Pesan email memiliki salah satu dari empat kemungkinan status: dikirim, tidak dikirim, coba lagi, dan gagal.

Menggunakan T-SQL

Untuk menampilkan status email yang dikirim menggunakan Email Database

  1. Pilih dari tabel sysmail_allitems , menentukan pesan yang menarik menurut mailitem_id atau sent_status.

  2. Untuk memeriksa status yang dikembalikan dari program eksternal untuk pesan email, gabungkan sysmail_allitems ke tampilan sysmail_event_log pada kolom mailitem_id , seperti yang diperlihatkan di bagian berikut.

    Secara default, program eksternal tidak mencatat informasi tentang pesan yang berhasil dikirim. Untuk mencatat semua pesan, atur tingkat pengelogan ke verbose menggunakan halaman Konfigurasi Parameter Sistem dari Wizard Konfigurasi Email Database.

Contoh (Transact-SQL)

Contoh berikut mencantumkan informasi tentang pesan email yang dikirim ke danw yang tidak berhasil dikirim program eksternal. Pernyataan mencantumkan subjek, tanggal dan waktu program eksternal gagal mengirim pesan, dan pesan kesalahan dari log Email 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  

Lihat Juga

Log dan Audit Email Database