윈2003서버에서 ASP프로그램으로 메일을 발송할때, 기존의 ASP 소스는 문제가 없으나 CDONTS를 사용한 메일 발송이 안됩니다. 이유인즉 cdonts는 NT4.0에서 사용되던 것인데 그것이 Windows 2000에서는 하위 호환을 위하여 지원이 되었지만 Windows 2003에서는 없어졌기 때문이다.

 

따라서 가급적이면 CDONTS보다는 CDOSYS를 사용하기를 바란다. (cdosys.dll)

 

소스를 수정하여 CDONTS가 아닌 CDO를 사용한다. 
Server.CreateObject("CDONTS.NewMail")를 Server.CreateObject("CDO.Message")로 변경해서 사용한다. (cdosys.dll 사용.)

 

CDO의 사용 예제 1 


Set objMail = Server.CreateObject("CDO.MESSAGE") 
objMail.From="aaa@mail.com" 
objMail.To = request("email") 
objMail.Subject= "subject" 
objMail.HTMLBody= "body" 
objMail.Send 
objMail.close 
Set objMail = Nothing

 

 

CDO의 사용 예제 2 

 

Dim iMsg 
Dim iConf 
Dim Flds 
Dim strHTML
Const cdoSendUsingPort = 2
set iMsg = CreateObject("CDO.Message")
set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
 Flds.Item("
http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
 Flds.Item("
http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost" 
 Flds.Item("
http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
 Flds.Update
Set iMsg.Configuration = iConf
iMsg.To = "
altip@msn.com"       'ToDo: 유효한 이멜 주소를 넣는다.
iMsg.From = "
altip@msn.com"   'ToDo: 유효한 이멜 주소를 넣는다.
iMsg.Subject = "이것은 테스트 CDOSYS 메시지입니다(Port 25를 통해 발송)"
iMsg.HTMLBody = strHTML      '메일내용을 넣는다.
iMsg.BodyPart.Charset="ks_c_5601-1987"         ' 한글 문자설정
iMsg.HTMLBodyPart.Charset="ks_c_5601-1987" ' 한글 문자설정
iMsg.AddAttachment "첨부파일"
iMsg.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing

 

 

CDO의 사용 예제 3 

 

set objMessage = createobject("cdo.message")
set objConfig = createobject("cdo.configuration")


' Setting the SMTP Server
Set Flds = objConfig.Fields

Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"  
Flds.update

Set objMessage.Configuration = objConfig
objMessage.To = "you@yourdomain.com"  '보내는 사람 이메일 주소
objMessage.From = "someone@somewhere.com" '받는 사람 이메일 주소
objMessage.Subject = "This is a sample email sent using CDO" '제목
objMessage.TextBody = "Congratulation" & VbCrLf & "If you receive this is, your mail component works" 
' 메일 내용이 HTML 형식이면 objMessage.TextBody 대신에 objMessage.HTMLBody를 사용
objMessage.fields.update
objMessage.Send

Response.write "발송 완료!!!!"

set objMessage = nothing
set objConfig = nothing

간단하죠?

참고로 로컬 서버에서 사용하실 때 유동 아이피 쓰시는 분들은 아이피 세팅시에
자동 DNS 아이피 받기로 하지 마시고 꼭 특정한 DNS 서버 아이피를 따로 설정해서 사용하세요.
안그럼 메일들이 발송 안되고 큐폴더로 떨어진답니다.

 

----------------------------------------------------------------------------------------------------


참고 : 기존 소스를 사용하고 싶다면 아래 방법을 사용한다.


1. Windows 2000에서 winnt\system32\inetsrv에 있는 cdonts.dll 

   Windows 2003의 폴더로 복사한다. 
2. 명령 창을 띄우고 regsvr32 cdonts.dll 라고 쳐서 등록해준다. 
3. 확인 창에서 OK를 눌러준다.

'asp' 카테고리의 다른 글

ASP 날짜 함수  (0) 2010.03.19
Scripting.Dictionary 개체  (0) 2010.03.15
해외 IP 접속 차단하기  (0) 2010.03.10
가상디렉토리  (0) 2010.03.03
레코드셋 읽어서 변수 자동 생성  (0) 2010.03.03

+ Recent posts