CDO SMTP를 쓰려면 iis6 가상서버를 설치해야한다.
프로그램추가/제거에서 SMPT 서버 설치 2개 선택하고 설치하면 됨.
c:\inetpub\mailroot
디렉토리에 읽기/쓰기 권한을 부여 해야만 CDO 메일이 발송된다.
windows 2008 에서는 사용자 계정 컨트롤이라는게 존재하므로
각각의 경우에 맞는 계정들에게 읽기/쓰기 권한을 줘야 한다.
권한을 주지 않았을 경우는 ‘액세스가 거부되었습니다’ 와 같은 오류가 발생했다.
예를 들자면,
작업스케쥴에 등록해서 vbs 같은것을 돌릴때는
mailroot 디렉토리에 해당 작업 실행 계정 권한을 추가하고
ASP와 같은 웹 스크립트를 돌릴때는
mailroot 디렉토리에 IIS_IUSRS 계정 권한을 추가하라는 것이다.
또한, 아래의 VBS 소스 중 pickup 디렉토리 지정하는부분이 내 경우엔 꼭 필요해져 버렸다.
지정하지 않았을 경우 ‘pickup 디렉터리 경로가 필요하지만 지정되지 않았습니다’ 오류가 발생했다
‘*************************************************************************
‘* CDO 메일 발송
‘*————————————————————————
‘* mail_from = “홍길동<hong@kil.com>”
‘* mail_to (여러사람일 경우는 , 로 구분)
‘* mail_html = “” : “text” : “html”
‘*************************************************************************
Function mail(mail_from, mail_to, mail_subject, mail_body, mail_html, mail_charset, mail_attach)
On Error Resume Next ‘// 오류 잡기
Dim objMessage, objConfig, Flds
SET objMessage = CreateObject(“CDO.Message”)
SET objConfig = Createobject(“CDO.Configuration”)
””””””””” Setting the SMTP Server ””””””””””””
Dim schema : schema = “http://schemas.microsoft.com/cdo/configuration/“
SET Flds = objConfig.Fields
With Flds
.Item(schema & “sendusing”) = 1 ‘// SMTP 위치? 1=로컬 : 2=외부
.Item(schema & “smtpserver”) = “localhost” ‘// 서버 주소
.Item(schema & “smtpserverport”) = 25 ‘// 서버 포트
.Item(schema & “smtpconnectiontimeout”) = 30 ‘// 접속시도 제한시간
‘.Item(schema & “smtpauthenticate”) = 1 ‘// SMTP 접속 인증방법 설정
‘.item(schema & “sendusername”) = “id@domain” ‘// SMTP 서버에 인증 ID
‘.item(schema & “sendpassword”) = “******” ‘// SMTP 서버에 인증 암호
‘.Item(schema & “smtpusessl”) = 1
.Item(schema & “smtpserverpickupdirectory”) = “C:\inetpub\mailroot\Pickup”
.update
End With
SET objMessage.Configuration = objConfig
With objMessage
.From = mail_from
.To = mail_to
.CC = “”
.Subject = mail_subject
If mail_charset = “” Then mail_charset = “ks_c_5601-1987”
If LEFT(mail_body, 7) = “http://” Then
.CreateMHTMLBody mail_body
‘echo(mail_body)
ElseIf LEFT(mail_body, 7) = “file://” Then
.CreateMHTMLBody mail_body
Else
.BodyPart.Charset = mail_charset
If mail_html = “text” Then
.TextBody = mail_body
ElseIf mail_html = “html” Then
.HTMLBody = mail_body
.HTMLBodyPart.Charset = mail_charset
End if
End if
If isset(mail_attach) Then
.AddAttachment mail_attach
End if
.DSNOptions = 14
‘.Fields(“urn:schemas:mailheader:return-receipt-to”) = “id@domain“
‘.Fields(“urn:schemas:mailheader:disposition-notification-to”) = “id@domain“
.Fields.update
.Send ‘// 메일 보내기
End With
SET objConfig = Nothing
SET objMessage = Nothing
If Err <> 0 Then mail = Err.Description Else mail = “” ‘// 오류 발생하면 오류상세를 반환
End Function
</hong@kil.com>