2011/04/05

IIS 7.5, CDO.Message.1 오류 '80040220' "SendUsing"

Windows Server 2008 R2 (IIS 7.5) 에서 기존 2000/2003 환경에서 작동하던 Classic ASP 코드중에 메일 발송 코드를 그대로 활용을 하기 위해서, cdonts.dll 를 호출하여 웹페이지에서 해당 코드를 호출하는 경우 다음과 같은 오류가 발생합니다.

   CDO.Message.1 오류 '80040220'
   "SendUsing" 구성 값이 잘못되었습니다.
   /mail.asp, 줄 12

소스는,

  set msg      = Server.CreateObject("CDO.Message")
  msg.From     = "webmaster@serverinfo.pe.kr"
  msg.To       = "webmaster@serverinfo.pe.kr"
  msg.Subject  = "메일테스트."
  msg.TextBody = "메일테스트."
  msg.Send
  Set msg = Nothing

위와 같이 오류가 나는 경우는, 해당 웹사이트의 응용프로그램풀 하위 호환모드 없이 Native 모드로 작동하기 때문에 발생합니다.


오류를 해결하기 위해서는,.

1. 메일 발송코드를 Microsoft 권장 코드로 변경하는 것입니다.
   명시적으로 설정값을 지정해 주는 것입니다.

set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
With Flds   
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
          = cdoSendUsingPickup
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory")
          = "c:\Inetpub\mailroot\pickup"   
.UpdateEnd With

2. 응용프로그램풀 작업자 계정을 기존 ApplicationPoolIndenty 에서 IIS 6의 기본값인 NetworkService로 변경하면 됩니다.

cdonts.dll 컴포넌트가 기존 IIS6 32비트 모듈이기 때문이며 IIS 7의 작업자 프로세스 모델에 관련된 계정의 권한이 기본값으로 할당되어 있지 않습니다. IIS 7.5 와는 완전히 분리된 IIS 6 기반 SMTP 에서 작동합니다.

위 방법외에도, 기존 IIS 6 메타베이스에 대한 권한 설정(메타베이스에 IIS_IUSRS 계정에 대한 권한 설정)등으로 가능하지만 굳이 그렇게 까지는 할필요까지는 없어 보입니다.

원래 지원하지 않는 방법을 꼼수를 통해서 사용하기 위함이므로,. 권장 코드로 변경하는것이 더 좋은 방법입니다.

댓글 없음:

댓글 쓰기

가장 많이 본 글