Windows 2000 에서 발송
<%
Set ObjMail = Server.CreateObject("CDONTS.NEWMAIL") ' 개체생성
ObjMail.Subject = "테스트 메일 제목입니다." ' 메일제목
ObjMail.From = "진실세상<truepia@korea.com>" ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To = "받는사람1<abc@domain.com>;받는사람2<def@domain.com>" ' 받는사람
ObjMail.Cc = "참조1<ghi@domain.com>;참조2<jkl@domain.com>" ' 참조
ObjMail.Bcc = "숨은참조1<mno@domain.com>;참조2<pqr@domain.com>" ' 숨은참조
ObjMail.Body = "<font color='blue'>HTML 테스트 내용입니다.</font>" ' 메일 내용
ObjMail.MailFormat = 0 ' HTML일떄 0, 일반 Text일때 1 으로 설정한다.
ObjMail.BodyFormat = 0 ' HTML일떄 0, 일반 Text일때 1 으로 설정한다.
ObjMail.AttachFile "d:/Test/test.jpg" ' 첨부파일
ObjMail.Send
Set ObjMail = Nothing
%>
※ 참고 : To, Cc, Bcc는 세미콜론(;)으로 연결해서 여러명에게 발송 가능합니다. (형식 : 표시할이름<메일주소>;표시할이름<메일주소>;....)
파일명을 변경해서 보낼경우 (ObjMail.AttachFile "d:/Test/test.jpg", "1.jpg")
Windows 2003 에서 발송
1. 기본구조
<%
Set ObjMail = Server.CreateObject("CDO.Message") ' 개체생성
ObjMail.Subject = "테스트 메일 제목입니다." ' 메일제목
ObjMail.From = "진실세상<truepia@korea.com>" ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To = "받는사람1<abc@domain.com>;받는사람2<def@domain.com>" ' 받는사람
ObjMail.Cc = "참조1<ghi@domain.com>;참조2<jkl@domain.com>" ' 참조
ObjMail.Bcc = "숨은참조1<mno@domain.com>;참조2<pqr@domain.com>" ' 숨은참조
ObjMail.Body = "<font color='blue'>HTML 테스트 내용입니다.</font>" ' 메일 내용
ObjMail.TextBody = "테스트 메일 내용입니다." ' 텍스트 메일 내용
ObjMail.Send
Set ObjMail = Nothing
%>
2. 내용을 HTML 형식으로 발송할 경우
ObjMail.TextBody 를 다음으로 변경하면 됩니다.
ObjMail.HTMLBody = "<font color='blue'>HTML 테스트 내용입니다.</font>"
ObjMail.HTMLBodyPart.Charset = "euc-kr" ' 알맞은 Charset 을 명시
3. 내용을 웹페이지나 파일을 읽어서 발송하는 경우
ObjMail.TextBody 를 다음으로 변경하면 됩니다.
ObjMail.CreateMHTMLBody "http://truepia.tistory.com/" ' 웹페이지를 보내는 경우
ObjMail.CreateMHTMLBody "file:///d:/Test/test.html" ' 서버에 있는 파일을 보내는 경우
서버에 있는 파일을 보내는 경우 확장자가 html 또는 htm 이여야만 합니다.
아... 또 실험정신발동~!!!!!
zip 파일을 확장자만 바꿔서 보내볼까? 해서 보내보니 역시 보내집니다. ㅋㅋ (보안상 문제가 될 소지가 있어보입니다.)
4. 첨부파일을 보내는 경우
다음 코드를 ObjMail.Send 코드 위에 추가해 주시면 됩니다.
ObjMail.AddAttachment "http://icon.daum-img.net/top/cms/logo/2008/12/nano46827545881876601.gif" ' URL형식의 첨부파일도 가능함.
ObjMail.AddAttachment "d:/Test/test.jpg"
단 위에 명시한 파일 경로는 서버에 있는 파일경로를 의미합니다.
클라이언트의 파일을 전송하려면 먼저 클라이언트의 파일을 서버로 업로드 하고 서버에 저장된 파일 경로를 명시해 줘야 합니다.
여러개의 첨부파일을 보낼경우 계속적으로 ObjMail.AddAttachment 로 추가해 주면 됩니다.
5. 로컬이 아닌 원격지 메일 서버를 사용하여 메일을 발송하는 경우
CDO.Configuration.Fields 는 여러개가 있지만 가장 대표적으로 쓰는것만 살펴보겠습니다.
<%
Set ObjMail = Server.CreateObject("CDO.Message") ' 개체생성
Set ObjConf = Server.CreateObject("CDO.Configuration") ' 개체생성
Set Flds = ObjConf.Fields
' 1:local SMTP로 발송(pickup directory), 2:원격지 SMTP로 발송
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.domain.com" ' 도메인 or IP
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 ' 원격지 SMTP Port 번호
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username" ' 원격지 SMTP에 인증이 있을경우 계정
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "passwd" ' 원격지 SMTP에 인증이 있을경우 비밀번호
Flds.Update
Set ObjMail.Configuration = ObjConf
ObjMail.Subject = "테스트 메일 제목입니다." ' 메일제목
ObjMail.From = "진실세상<truepia@korea.com>" ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To = "받는사람1<abc@domain.com>;받는사람2<def@domain.com>" ' 받는사람
ObjMail.Cc = "참조1<ghi@domain.com>;참조2<jkl@domain.com>" ' 참조
ObjMail.Bcc = "숨은참조1<mno@domain.com>;참조2<pqr@domain.com>" ' 숨은참조
ObjMail.TextBody = "테스트 메일 내용입니다." ' 텍스트 메일 내용
ObjMail.AddAttachment "d:/Test/test.jpg"
ObjMail.Send
Set ObjMail = Nothing
%>
단 mail.domain.com 서버의 SMTP에서 소스가 있는 서버에서 접근할 수 있도록 릴레이 제한이 풀려있어야 합니다.
그렇지 않을 경우 ObjMail.Send 라인에서 에러가 발생합니다.
6. 배달 확인 / 읽음 확인 구현 방법
<%
Set ObjMail = Server.CreateObject("CDO.Message") ' 개체생성
Set ObjConf = Server.CreateObject("CDO.Configuration") ' 개체생성
Set Flds = ObjConf.Fields
' 1:local SMTP로 발송(pickup directory), 2:원격지 SMTP로 발송
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.domain.com" ' 도메인 or IP
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 ' 원격지 SMTP Port 번호
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username" ' 원격지 SMTP에 인증이 있을경우 계정
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "passwd" ' 원격지 SMTP에 인증이 있을경우 비밀번호
Flds.Update
Set ObjMail.Configuration = ObjConf
ObjMail.Subject = "테스트 메일 제목입니다." ' 메일제목
ObjMail.From = "진실세상<truepia@korea.com>" ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To = "받는사람1<abc@domain.com>" ' 받는사람
ObjMail.TextBody = "테스트 메일 내용입니다." ' 텍스트 메일 내용
ObjMail.DSNOptions = 14
' 이 메시지의 배달 상태 확인(delivery status notification:DSN)값으로 14는 배달 성공, 실패 및 지연시 확인메시지 생성
' 0 : 확인메세지 생성 안함
' 1 : 확인메세지 생성 안함
' 2 : 배달 실패시 확인메시지 생성
' 4 : 배달 성공시 확인메시지 생성
' 8 : 배달 지연시 확인메시지 생성
'14 : 배달 성공, 실패 및 지연시 확인메시지 생성
ObjMail.Fields("urn:schemas:mailheader:return-receipt-to") = "진실세상<truepia@korea.com>"
' 받는 사람이 이 메시지를 열었을 때 읽음 확인 메시지가 여기에서 지정된 사람에게 보내집니다.
ObjMail.Send
Set ObjMail = Nothing
%>
받는 메일서버에서 DSN을 지원해 줘야하는데 대부분의 웹메일에서는 지원하지 않아 제대로된 상태정보가 발송되지 않습니다.
(DSN을 지원하지 않도록 확인된 웹메일 : 다음, 네이버, 네이트, 코리아닷컴, gmail)
특히 코리아닷컴 같은 경우는 DSN옵션을 셋팅했을 경우에 메일이 거의 반나절이후에 전송 됐습니다.(다른 웹메일은 바로 메일전송은 됩니다.)
그리고 웹메일에서는 읽음확인 메시지도 지원되지 않습니다.