데이터베이스 메일로 이메일 메시지 보내기

데이터베이스 메일로 이메일 메시지 보내기

데이터베이스 메일을 통해 이메일을 보낼 때는 sp_send_dbmail 저장 프로시저를 사용해요. 받는 사람 한 명에게 보내는 기본적인 사용법부터, 쿼리 결과를 파일로 첨부하거나 HTML 형식으로 보내는 응용까지 예제와 함께 살펴볼게요.

출처: 문서

본문

데이터베이스 메일로 이메일 메시지를 보낼 때는 sp_send_dbmail 저장 프로시저를 사용합니다.

사용법

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = '[email protected][; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';

다음 매개변수는 필수입니다.

  • @profile_name – 메시지를 보낼 데이터베이스 메일 프로필의 이름입니다.
  • @recipients – 메시지를 보낼 이메일 주소 목록으로, 세미콜론으로 구분합니다.
  • @subject – 메시지의 제목입니다.
  • @body – 메시지의 본문입니다. 선언된 변수를 본문으로 사용할 수도 있어요.

다음 매개변수는 선택 사항입니다.

  • @body_format – 선언된 변수와 함께 사용해 이메일을 HTML 형식으로 보냅니다.
  • @file_attachments – 메시지 첨부 파일 목록으로, 세미콜론으로 구분합니다. 파일 경로는 절대 경로여야 해요.
  • @query – 실행할 SQL 쿼리입니다. 쿼리 결과를 파일로 첨부하거나 메시지 본문에 포함할 수 있어요.
  • @attach_query_result_as_file – 쿼리 결과를 파일로 첨부할지 여부입니다. 아니오면 0, 예면 1로 설정하며 기본값은 0입니다.

예제

몇 가지 예제로 이메일 메시지를 보내는 방법을 보여드릴게요.

단일 수신자에게 메시지 보내기

USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = '[email protected]',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO

여러 수신자에게 메시지 보내기

USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = '[email protected];[email protected]',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO

SQL 쿼리 결과를 파일 첨부로 보내기

USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = '[email protected]',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO

HTML 형식으로 메시지 보내기

USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi,

 Heading

  See the report.  Regards ';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = '[email protected]',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO

데이터베이스에서 특정 이벤트가 발생했을 때 트리거로 메시지 보내기

USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = '[email protected]',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO

더 알아보기 (Learn more)