본문 바로가기
데스크탑/비주얼 베이직 6

CDO 객체를 이용하여 Mail 보내기.

by 브래드.권 2009. 1. 17.



CDO 라는 객체를 코드상에서 이용하면 별도의 메일서버 로그온이 필요없이 메일 보낼수 있습니다.

CDO는 Collaboration Data Objects 의 약자로 MS Exchange Server 버전과 NT Server 버전으로 나눌 수 있고 여기서는 NTS용 CDO 를 사용하겠습니다.

CDO 객체를 사용하기 위해서는 cdonts.dll 이라는 파일이 필요하며 IIS 설치하면 기본적으로 설치되고 Windows\System32\ 폴더에 해당 파일이 존재해야 합니다.

아래는 기본적으로 사용되는 CDO 객체의 속성과 메서드에 대한 설명입니다. 더 있을 수 있는데 여기서는 기본적인 것만 나타냈고 추가했으면 하는게 있으면 알려주세요.

속성

 

From

보내는 사람 메일 주소

To

받는 사람 “;” 로 구분하여 여러 명 가능.

Cc

참조

Bcc

숨은 참조

Subject

제목

TextBody

내용

BodyFormat

내용의 형식.

CdoBodyFormatHTML(0) : HTML 형식

CdoBodyFormatText(1) : Text 형식

Importance

우선 순위.

CdoLow(0) : 낮게

CdoNormal(1) : 중간

CdoHigh(2) : 높게

Value

메일 헤더의 추가 정보를 설정

Version

CDO for NTS 버전(반환)


메서드

 

Send

메일 보내기

) Send From, To, Subject, Body, Importance

AddAttachment

파일 첨부하기

) AttachFile 파일명, 파일이름, 인코딩 방식

인코딩 방식.

CdoEncodingUUencode(0) : Ascii 파일 첨부시 사용

CdoEncodingBase64(1) : Binary 파일 첨부시 사용


그럼 예제를 통해 어떻게 사용되어 지는지 한번 알아보겠습니다. VB 예제이지만 이를 약간 변경하면 ASP 에서도 사용이 가능합니다.

예제 소스)



    Dim strArr() As String
    Dim i As Integer
    Dim objMessage As Object

    Set objMessage = CreateObject("CDO.Message")                      'CDO(Collaboration Data Objects) messaging 사용
    
    With objMessage
        .Subject = "제목"
        .From = "보내는 사람 메일 주소"
        .To = "받는 사람 메일 주소1;받는 사람 메일 주소2"
        .Cc = "참조할 사람 메일 주소1;참조할 사람 메일 주소2"
        .TextBody = "메일 본문 내용입니다."
        
        strArr = Split("c:\attachfile1.txt;c:\attachfile2.txt", ";")           '첨부할 파일 경로를 split 함수를 이용해 ";" 로 구분하여 나눕니다.
        
        For i = 0 To UBound(strArr)                                                'UBound() : 매개변수로 넘어온 배열의 최대 열수를 가져옵니다. 여기서는 1이 되겠죠.
            .AddAttachment strArr(i)
        Next
        
        'Server 접근 방법. 1일 경우 local(SMTP), 2일 경우 외부(SMTP)로 메일 전송.
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        
        'Server 주소.
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mstrMailServer
        
        'SMTP 접속 인증방법. 0일 경우 익명, 1일 경우 ID,Password 사용, 2일 경우 NT 인증 사용(별도 로그인 필요없음, outlook 이 사용)
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
        
'        'SMTP server 에 인증할 ID
'        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Tester"
'        'SMTP server 에 인증할 암호.
'        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
        
        '접근할 port 번호.
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        
        .Configuration.Fields.Update
        
        .Send
        
        MsgBox "Message sent successfully", vbOKOnly, "Email"