Khi gửi email từ SQL Server, bạn có thể kiểm tra mọi thư chưa gửi bằng sysmail_unsentitems
xem.
Ví dụ
Dưới đây là một ví dụ về kiểm tra thư chưa gửi. Lưu ý rằng nó cần được chạy trên msdb
cơ sở dữ liệu.
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Kết quả (sử dụng đầu ra dọc):
mailitem_id | 4 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 04:11:19.300 send_request_user | sa sent_account_id | NULL sent_status | unsent sent_date | NULL last_mod_date | 2020-08-24 04:11:19.300 last_mod_user | sa
Tôi đã sử dụng đầu ra dọc ở đây để bạn không cần phải cuộn sang ngang để xem tất cả các cột.
Trong trường hợp này, có một email chưa được gửi. Tôi đã tình cờ chạy truy vấn này ngay sau khi thực thi msdb.dbo.sp_send_dbmail
để gửi thư này.
Hóa ra, thư được gửi ngay sau khi tôi sao chép các kết quả ở trên và bây giờ khi tôi chạy lại truy vấn đó, tôi không nhận được kết quả nào (tức là không có email nào chưa được gửi).
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Kết quả:
(0 rows affected)
Tuy nhiên, chỉ vì không có email chưa gửi, điều đó không có nghĩa là không có email nào không thành công.
Bạn có thể truy vấn sysmail_faileditems
để trả về danh sách các email bị lỗi.
Bạn cũng có thể truy vấn sysmail_sentitems
để nhận tất cả các email đã gửi.
Bạn cũng có thể truy vấn sysmail_allitems
để nhận tất cả các email (đã gửi, chưa gửi, không thành công và đang thử lại).