HOWTO: SQL Server에서 SQL 메일을 사용하지 않고 전자 메일 보내기

이 문서가 적용되는 제품 보기.

기술 자료 ID
:
312839

마지막 검토
:
2007년 8월 13일 월요일

수정
:
10.1

이 문서는 이전에 다음 ID로 출판되었음: KR312839

이 페이지에서

요약

Microsoft Windows NT Server용 CDO(CDONTS)를 사용하는 방법

스마트 호스트 구성

CDONTS 전자 메일을 보내는 저장 프로시저 만들기

Microsoft Windows 2000용 CDO(CDOSYS)를 사용하는 방법

CDOSYS 메일을 보내는 저장 프로시저 만들기

참조

요약

SQL 메일을 사용하면 Microsoft SQL Server에서 손쉽게 전자 메일을 보내거나 읽을 수 있지만 SQL 메일이 MAPI 응용 프로그램이므로 서버에 MAPI 하위 시스템이 있어야 합니다. Microsoft Windows NT 4.0에서는 Windows Messaging을 설치할 때 MAPI 하위 시스템이 설치됩니다. 그러나 Microsoft Windows 2000에서는 MAPI 하위 시스템이 제공되지 않습니다. 따라서 SQL 메일을 사용하려면 Microsoft Outlook과 같은 MAPI 클라이언트를 설치해야 합니다.
SQL Server에서 직접 SMTP(Simple Mail Transfer Protocol) 전자 메일을 보내는 다른 방법을 사용할 수 있습니다. 예를 들어 CDONTS(NT Server용 Collaboration Data Objects)나 CDOSYS(Windows 2000용 Collaboration Data Objects)를 sp_OA SQL Server OLE 자동화 저장 프로시저와 함께 사용할 수 있습니다. 이 문서에서는 이러한 기술을 사용하여 인터넷 메일 서버에 전자 메일을 보내는 방법을 예제를 통해 설명합니다. 이러한 기술을 수정하여 보다 강력한 메일 시스템을 구축할 수도 있습니다. 예를 들어 오류 처리 코드를 추가할 수 있습니다. 이 예제에 사용된 방법으로는 전자 메일을 읽거나 처리할 수 없습니다.
참고 이러한 프로그래밍 예제는 Transact-SQL에서 CDO 개체 모델을 호출하는 데 사용할 수 있는 기술을 보여 줍니다. 이러한 예제를 프로그래밍 방식으로 확장하거나 프로덕션 환경에서 코드를 실행하는 데 필요한 스트레스 테스트를 수행할 책임은 사용자에게 있습니다.
Microsoft는 모든 보증(상품, 특정 목적에 대한 적합성 및 비침해에 대한 묵시적인 보증을 포함하며 이에 제한되지 않음)을 배제하며 예를 보여 주기 위한 목적으로만 이 프로그래밍 예제를 제공합니다. 본 문서의 내용은 프로시저를 작성하고 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 기술 지원 담당자는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 절차를 구성하지는 않습니다. 프로그래밍에 익숙하지 않은 사용자는 MCP(Microsoft Certified Partner)의 도움을 받거나 Microsoft 고객기술지원부(02-508-0040)로 문의하십시오. MCP에 대한 자세한 내용을 보려면 다음 Microsoft 웹 사이트를 방문하십시오.

https://solutionfinder.microsoft.com/ (https://solutionfinder.microsoft.com/)

Microsoft에서 제공하는 지원 서비스에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.

기술지원 서비스 안내 (http://support.microsoft.com/default.aspx?scid=fh;ko;serviceoverview)

위로 가기

Microsoft Windows NT Server용 CDO(CDONTS)를 사용하는 방법
CDONTS는 웹 기반 응용 프로그램에 메시징 기능을 제공하는 SMTP 전용 OLE 서버이므로, HTML 기반 전자 메일을 보내는 기능을 지원합니다. SQL 메일과 같은 MAPI 기반 응용 프로그램은 이러한 기능을 지원하지 않습니다. Microsoft Internet Information Server(IIS) 4.0 이상에서는 기본적으로 CDONTS가 설치됩니다. Microsoft Windows 2000에서는 기본적으로 Microsoft Internet Information Server(IIS) 5.0이 설치됩니다.
CDONTS에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

177850 (http://support.microsoft.com/kb/177850/) INFO: CDO 1.2와 CDONTS의 차이점

CDONTS는 SMTP를 통해 로컬 서버에 전자 메일을 보냅니다. 로컬 서버에 SMTP 서버가 없으면 IIS에서 설치한 SMTP 가상 서버를 사용하여 SMTP 전자 메일을 해당 SMTP 메일 서버로 라우팅할 수 있습니다. CDONTS를 사용하여 SQL Server에서 전자 메일을 보내려면 다음과 같이 하십시오.

1.
SQL Server를 실행하는 컴퓨터에 IIS를 설치하여 실행합니다.

2.
IIS SMTP 서비스가 로컬 서버에 수신되는 모든 SMTP 전자 메일을 SMTP 메일 서버에 자동으로 라우팅하도록 SMTP 메일 서버를 "스마트 호스트"로 지정합니다.

3.
SQL Server에서 전자 메일을 보내는 데 사용할 수 있는 저장 프로시저를 만듭니다.

SQL 메일 대신 CDONTS를 사용할 때는 SQL Server를 실행하는 컴퓨터에 Microsoft Outlook과 같은 메일 클라이언트를 설치할 필요가 없으며 Microsoft Exchange 서버도 필요하지 않습니다. SMTP 전자 메일을 지원하는 모든 메일 서버를 "스마트 호스트"로 사용할 수 있습니다. 하지만 CDONTS를 사용하면 SQL Server를 실행하는 컴퓨터에 수신되는 전자 메일을 읽거나 처리할 수 없으며 SQL 에이전트 메일 기능을 대체할 수도 없습니다.
다음 방법에서는 Microsoft Windows 2000이 사용됩니다. 컴퓨터에 IIS 4.0이 설치되어 있으면 Microsoft Windows NT 4.0을 다음 방법과 비슷하게 구성할 수 있지만 절차가 약간 다릅니다.
Microsoft Windows NT 4.0에서 "스마트 호스트"를 구성하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

230235 (http://support.microsoft.com/kb/230235/) XCON: SMTP 메일을 릴레이하도록 IIS SMTP 서비스를 구성하는 방법

스마트 호스트 구성

1.
시작을 누르고 프로그램, 관리 도구를 차례로 가리킨 다음
인터넷 서비스 관리자를 눌러 IIS 관리자를 엽니다.

2.
서버 트리를 엽니다. 기본 SMTP 가상 서버를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.

3.
배달 탭으로 이동한 다음 고급을 누릅니다.

4.
스마트 호스트 입력란에 SMTP 메일 서버의 이름을 입력합니다. SMTP 메일 서버의 이름을 모르면 메일 관리자에게 문의하십시오.

5.
SMTP 서비스가 실행되고 있는지 확인합니다. SMTP 서비스는 IIS 관리 서비스의 일부이므로 IIS 관리 서비스도 실행되고 있어야 합니다.

CDONTS 전자 메일을 보내는 저장 프로시저 만들기
참고 이 문서에 사용된 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 및 이벤트 등은 실제 데이터가 아닙니다. 어떠한 실제 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 이벤트와도 연관시킬 의도가 없으며 그렇게 유추해서도 안됩니다.
다음과 유사한 코드를 사용하면 master 데이터베이스에서 SQL Server OLE 자동화 저장 프로시저로 CDONTS 개체 모델을 호출하여 전자 메일을 보내는 저장 프로시저를 만들 수 있습니다.
CREATE PROCEDURE [dbo].[sp_send_cdontsmail] 
@From varchar(100),
@To varchar(100),
@Subject varchar(100),
@Body varchar(4000),
@CC varchar(100) = null,
@BCC varchar(100) = null
AS
Declare @MailID int
Declare @hr int
EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT
EXEC @hr = sp_OASetProperty @MailID, 'From',@From
EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body
EXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCC
EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC
EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject
EXEC @hr = sp_OASetProperty @MailID, 'To', @To
EXEC @hr = sp_OAMethod @MailID, 'Send', NULL
EXEC @hr = sp_OADestroy @MailID

그런 다음 이 저장 프로시저를 사용하고 올바른 매개변수를 제공하십시오.
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
참고sysadmin 고정 서버 역할의 구성원만이 OLE 자동화 저장 프로시저를 실행할 수 있습니다. SQL Server가 sysadmin 고정 서버 역할의 구성원이 아닐 경우 예제에 설명되어 있는 저장 프로시저를 사용하여 전자 메일을 보낼 수 없습니다. 이러한 상황에서는 CDONTS를 사용하여 전자 메일을 보내는 클라이언트 응용 프로그램을 개발해야 합니다. 예를 들어 Microsoft Visual Basic 응용 프로그램을 사용할 수 있습니다.
CDONTS는 SMTP 로컬 가상 서버에 전자 메일을 보냅니다. 그러면 서버는 스마트 호스트 입력란에 지정된 SMTP 메일 서버로 전자 메일을 라우팅합니다. SMTP 메일 서버는 To: 인수에 지정된 전자 메일 주소(이 예제의 경우 "someone2@example.com")로 메일을 보냅니다. From: 인수에 지정된 이름은
제목이 "Test of CDONTS"이고 메시지 본문이 "It works"인 전자 메일을 보낸 사람(이 예제의 경우 "someone@microsoft.com")으로 나타납니다. CC 또는 BCC 필드에는 인수를 제공하지 않았기 때문에 전자 메일이 아무에게도 복사되지 않습니다.
이 예제를 수정하여 HTML 기반 전자 메일이나 첨부 파일을 보낼 수 있습니다. CDONTS에 대한 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://msdn.microsoft.com/library (http://msdn.microsoft.com/library)
왼쪽 창에서 Messaging and Collaboration, Collaboration Data Objects, CDO 1.2.1을 차례로 확장하십시오.
SQL Server OLE 자동화 저장 프로시저에 대한 자세한 내용은 SQL Server 2000 온라인 설명서를 참조하십시오.

위로 가기

Microsoft Windows 2000용 CDO(CDOSYS)를 사용하는 방법
CDOSYS는 Microsoft Windows 2000에서 메시징 응용 프로그램을 개발하는 데 사용되는 개체 모델을 제공하고 기존의 CDONTS(Windows NT Server용 CDO) 라이브러리 기능을 향상시킵니다. CDOSYS를 사용하려면 Windows 2000과 로컬 또는 원격 SMTP 서버가 있어야 합니다.
프로그래밍 방식으로 SMTP 서버를 가리키도록 CDOSYS를 구성하여 개발자의 SMTP 서버 구성 작업에 대한 융통성을 높일 수 있습니다.
CDOSYS에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

195683 (http://support.microsoft.com/kb/195683/) INFO: 1.x CDO 라이브러리와 CDOSYS.DLL의 관계

CDOSYS가 원격 SMTP 서버에 전자 메일을 보낼 수 있으므로 SQL Server를 실행하는 컴퓨터에 Internet Information Server를 설치하여 실행할 필요가 없으며 SMTP 가상 서버를 구성할 필요도 없습니다. SQL Server에서 전자 메일을 보내는 데 사용할 수 있는 저장 프로시저를 만들기만 하면 됩니다.
SQL 메일 대신 CDOSYS를 사용할 때는 SQL Server를 실행하는 컴퓨터에 Microsoft Outlook과 같은 메일 클라이언트를 설치할 필요가 없으며 Exchange 서버도 필요하지 않습니다. SMTP 메일을 원격 SMTP 메일 서버로 지원하는 모든 메일 서버를 사용할 수 있습니다. 하지만 CDOSYS를 사용하면 SQL Server에 수신되는 전자 메일을 읽거나 처리할 수 없으며 SQL 에이전트 메일 기능을 대체할 수도 없습니다.
CDOSYS를 SQL Server OLE 자동화 개체와 함께 사용하면 SQL Server OLE 자동화를 통해 CDOSYS 개체 모델이 호출되는데, 이는 SQL Server 2000 서비스 팩 1(SP1)과 SQL Server 2000 서비스 팩 2(SP2)에서 테스트되었습니다. Microsoft는 SQL Server 2000 SP1 이전에 릴리스된 SQL Server 서버 버전에서 OLE 자동화 저장 프로시저로부터 CDOSYS를 호출할 수 있다고 보증하지 않습니다.


CDOSYS 메일을 보내는 저장 프로시저 만들기
다음과 유사한 코드를 사용하면 master 데이터베이스에서 SQL Server OLE 자동화 저장 프로시저로 CDOSYS 개체 모델을 호출하여 전자 메일을 보내는 저장 프로시저를 만들 수 있습니다.
CREATE PROCEDURE [dbo].[sp_send_cdosysmail] 
   @From varchar(100) ,
   @To varchar(100) ,
   @Subject varchar(100)=" ",
   @Body varchar(4000) =" "
/*********************************************************************

This stored procedure takes the parameters and sends an e-mail. 
All the mail configurations are hard-coded in the stored procedure. 
Comments are added to the stored procedure where necessary.
References to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/ 
   AS
   Declare @iMsg int
   Declare @hr int
   Declare @source varchar(255)
   Declare @description varchar(500)
   Declare @output varchar(1000)

--************* Create the CDO.Message Object ************************
   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address. 
-- Replace MailServerName by the name or IP of your SMTP Server.
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'MailServerName' 

-- Save the configurations to the message object.
   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
   IF @hr <>0 
     select @hr
     BEGIN
       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
       IF @hr = 0
         BEGIN
           SELECT @output = '  Source: ' + @source
           PRINT  @output
           SELECT @output = '  Description: ' + @description
           PRINT  @output
         END
       ELSE
         BEGIN
           PRINT '  sp_OAGetErrorInfo failed.'
           RETURN
         END
     END

-- Do some error handling after each step if you have to.
-- Clean up the objects created.
   EXEC @hr = sp_OADestroy @iMsg
   go
그런 다음 이 저장 프로시저를 사용하고 올바른 매개변수를 제공하십시오.
   declare @Body varchar(4000)
   select @Body = 'This is a Test Message'
   exec sp_send_cdosysmail 'someone@example.com','someone2@example.com','Test of CDOSYS',@Body
참고sysadmin 고정 서버 역할의 구성원만이 OLE 자동화 저장 프로시저를 실행할 수 있습니다. SQL Server가 sysadmin 고정 서버 역할의 구성원이 아닐 경우 예제에 설명되어 있는 저장 프로시저를 사용하여 전자 메일을 보낼 수 없습니다. 이러한 상황에서는 CDOSYS를 사용하여 메일을 보내는 클라이언트 응용 프로그램을 개발해야 합니다. 예를 들어 Microsoft Visual Basic 응용 프로그램을 사용할 수 있습니다.
CDOSYS는 cdoSMTPServerName으로 지정된 원격 SMTP 메일 서버에 전자 메일을 보냅니다.
SMTP 메일 서버는 To: 인수에 지정된 전자 메일 주소(이 예제의 경우 "someone2@example.com")로 메일을 보냅니다. From: 인수에 지정된 이름은 제목이 "Test of CDONTS"이고
@sHTML 변수에 포함된 HTML 형식의 전자 메일을 보낸 사람(이 예제의 경우 "someone@microsoft.com")으로 나타납니다.
이 예제를 수정하여 텍스트 기반 전자 메일이나 첨부 파일을 보낼 수도 있습니다. CDOSYS에 대한 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
MSDN Library (http://msdn.microsoft.com/library)
왼쪽 창에서 Messaging and Collaboration, Collaboration Data Objects, CDO for Windows 2000을 차례로 확장하십시오.

위로 가기

참조

SQL Server OLE 자동화 저장 프로시저에 대한 자세한 내용은 SQL Server 2000 온라인 설멍서의 "SQL Server OLE 자동화 저장 프로시저" 관련 항목을 참조하십시오.
그래도 원하는 정보를 찾을 수 없으면 다음 Microsoft SQL Server 뉴스 그룹을 방문하십시오. Microsoft SQL Server 뉴스 그룹(영문) (http://support.microsoft.com/newsgroups/)
이 문서나 다른 Microsoft SQL Server 기술 자료 문서에 대한 의견이 있으면 SQLKB@Microsoft.com (mailto:sqlkb@microsoft.com)으로 보내주시기 바랍니다.

+ Recent posts