데이터베이스 메일로 이메일 메시지 보내기
데이터베이스 메일로 이메일 메시지 보내기
데이터베이스 메일을 통해 이메일을 보낼 때는 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