ASP SMTP 사용법 | Server Side

ASP 에서 smtp 사용 하는 방법.

이게 window 버전에 따라 조금씩의 차이가 있기 때문에..

까먹지 않기 위해서 적어놓는다 토리얌! 귀염귀염.

 

Windows 2000 에서 발송

Set ObjMail        = Server.CreateObject("CDONTS.NEWMAIL")                                   ' 개체생성
ObjMail.Subject  = "테스트 메일 제목입니다."                                                             ' 메일제목
ObjMail.From     = "진실세상"                                                  ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To         = "받는사람1;받는사람2"      ' 받는사람
ObjMail.Cc         = "참조1;참조2"                    ' 참조
ObjMail.Bcc       = "숨은참조1;참조2"           ' 숨은참조 
ObjMail.Body     = "HTML 테스트 내용입니다."                     ' 메일 내용                          
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     = "진실세상"                                                  ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To         = "받는사람1;받는사람2"      ' 받는사람
ObjMail.Cc         = "참조1;참조2"                    ' 참조
ObjMail.Bcc       = "숨은참조1;참조2"           ' 숨은참조 
ObjMail.Body     = "HTML 테스트 내용입니다."                     ' 메일 내용                          
ObjMail.TextBody = "테스트 메일 내용입니다."                                                          ' 텍스트 메일 내용                          
ObjMail.Send
Set ObjMail = Nothing
%>

2. 내용을 HTML 형식으로 발송할 경우
ObjMail.TextBody 를 다음으로 변경하면 됩니다.
ObjMail.HTMLBody = "HTML 테스트 내용입니다."
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     = "진실세상"                                                  ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To         = "받는사람1;받는사람2"      ' 받는사람
ObjMail.Cc         = "참조1;참조2"                    ' 참조
ObjMail.Bcc       = "숨은참조1;참조2"           ' 숨은참조 
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     = "진실세상"                                                  ' 보내는사람 (형식 : 표시할이름<메일주소>)
ObjMail.To         = "받는사람1"                                                 ' 받는사람
ObjMail.TextBody = "테스트 메일 내용입니다."                                                          ' 텍스트 메일 내용  
ObjMail.DSNOptions = 14
' 이 메시지의 배달 상태 확인(delivery status notification:DSN)값으로 14는 배달 성공, 실패 및 지연시 확인메시지 생성
' 0 : 확인메세지 생성 안함
' 1 : 확인메세지 생성 안함
' 2 : 배달 실패시 확인메시지 생성
' 4 : 배달 성공시 확인메시지 생성
' 8 : 배달 지연시 확인메시지 생성
'14 :  배달 성공, 실패 및 지연시 확인메시지 생성
ObjMail.Fields("urn:schemas:mailheader:return-receipt-to")= "진실세상"
' 받는 사람이 이 메시지를 열었을 때 읽음 확인 메시지가 여기에서 지정된 사람에게 보내집니다.
ObjMail.Send
Set ObjMail = Nothing
%>

받는 메일서버에서 DSN을 지원해 줘야하는데 대부분의 웹메일에서는 지원하지 않아 제대로된 상태정보가 발송되지 않습니다.
(DSN을 지원하지 않도록 확인된 웹메일 : 다음, 네이버, 네이트, 코리아닷컴, gmail)
특히 코리아닷컴 같은 경우는 DSN옵션을 셋팅했을 경우에 메일이 거의 반나절이후에 전송 됐습니다.(다른 웹메일은 바로 메일전송은 됩니다.)
그리고 웹메일에서는 읽음확인 메시지도 지원되지 않습니다.


 

smtp,asp
Comment Write
Comment List
송토리 2011.11.17 16:25              
자꾸 외국애들이 스펨 코멘트 단다..!! 체크하자 구문 넣어본거 테스트한다.
reply_arrow 관리자 2011.11.17 16:26         
그래그래 잘생각했어! 참고로 댓글은 2depth 밖에 안됨.