데이터베이스 메일을 통해 보낸 전자 메일 메시지의 상태 확인

이 항목에서는 SQL Server 2012에서 Transact-SQL을 사용하여 데이터베이스 메일로 보낸 전자 메일 메시지의 상태를 확인하는 방법에 대해 설명합니다.

  • 시작하기 전 주의 사항  

  • 데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면: Transact-SQL 사용

시작하기 전 주의 사항

데이터베이스 메일은 보내는 전자 메일 메시지의 복사본을 유지하고 msdb 데이터베이스의 sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditems 뷰에 표시합니다. 데이터베이스 메일 외부 프로그램은 작업을 기록하고 Windows 응용 프로그램 이벤트 로그와 msdb 데이터베이스의 sysmail_event_log 뷰를 통해 로그를 표시합니다. 전자 메일 메시지의 상태를 확인하려면 이 뷰에 대한 쿼리를 실행하십시오. 전자 메일 메시지에는 sent, unsent, retryingfailed의 4가지 가능한 상태 중 하나가 있습니다.

Transact-SQL 사용

데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면

[!참고]

이 절차에 대한 예는 이 섹션의 뒷부분에 나오는 예(Transact-SQL)를 참조하십시오.

  1. sysmail_allitems 테이블에서 mailitem_id 또는 sent_status로 메시지를 선택합니다.

  2. 전자 메일 메시지에 대해 외부 프로그램에서 반환된 상태를 확인하려면 다음 섹션에 나열된 방법으로 sysmail_allitemsmailitem_id 열의 sysmail_event_log 뷰에 조인합니다.

    기본적으로 외부 프로그램은 성공적으로 전송된 메시지에 대한 정보를 기록하지 않습니다. 모든 메시지를 기록하려면 데이터베이스 메일 구성 마법사시스템 매개 변수 구성 페이지를 사용하여 로깅 수준을 자세히로 설정하십시오.

예(Transact-SQL)

다음 예에서는 danw로 전송되었지만 외부 프로그램에서 성공적으로 보내지 못한 모든 전자 메일 메시지에 대한 정보를 나열합니다. 이 문은 제목, 외부 프로그램에서 메시지를 보내지 못한 날짜와 시간, 데이터베이스 메일 로그의 오류 메시지를 나열합니다.

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

[맨 위]

참고 항목

개념

데이터베이스 메일 로그 및 감사