2016-09-14 3 views
1

많은 질문이 있지만 거기에는 아무 답변도없는 것 같습니다.ASP 클래식 전자 메일 '80040213'전송이 서버에 연결하지 못했습니다.

내 응용 프로그램은 실행중인 서버가 Windows Server 2000 (매우 오래된 것 같습니다)이고 Office365 서버를 사용하며 전자 메일에 로그인 할 때 Office365에서 제공하는 정보를 사용하고 있습니다 (포트 587, 올바른 사용자 이름과 암호, 올바른 SMTP 서버, TLS를 true로 설정).

항상 "CDO.Message.1 오류 '가 발생합니다. 80040213'서버에 연결하지 못했습니다." 오류 메시지로, 오류가 발생한 행은 .Send 명령입니다.

Const cdoSendUsingMethod   = "http://schemas.microsoft.com/cdo/configuration/sendusing" 
    Const cdoSendUsingPort    = 2 
    Const cdoSMTPServer    = "http://schemas.microsoft.com/cdo/configuration/smtpserver" 
    Const cdoSMTPServerPort   = "http://schemas.microsoft.com/cdo/configuration/smtpserverport" 
    Const cdoSMTPConnectionTimeout  = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" 
    Const cdoSMTPAuthenticate   = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" 
    Const cdoBasic      = 1 
    Const cdoSendUserName    = "http://schemas.microsoft.com/cdo/configuration/sendusername" 
    Const cdoSendPassword    = "http://schemas.microsoft.com/cdo/configuration/sendpassword" 
    'Use SSL for the connection (False or True) 
    Const cdoSendTLS     = "http://schemas.microsoft.com/cdo/configuration/smtpusessl" 

    ' create CDOSYS objects 
    Set objCDOSYSMail = Server.CreateObject("CDO.Message") 
    Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration") 

    'Set our smtp server 
    objCDOSYSCon.Fields.Item(cdoSMTPServer) = "smtp.office365.com" 
    objCDOSYSCon.Fields.Item(cdoSMTPAuthenticate) = cdoBasic 
    objCDOSYSCon.Fields.Item(cdoSendUserName) = "[email protected]" 
    objCDOSYSCon.Fields.Item(cdoSendPassword) = "password" 
    'objCDOSYSCon.Fields.Item(cdoSMTPServerPort) = 587 
    objCDOSYSCon.Fields.Item(cdoSendUsingMethod) = cdoSendUsingPort 
    objCDOSYSCon.Fields.Item(cdoSendTLS) = True 
    objCDOSYSCon.Fields.Item(cdoSMTPConnectionTimeout) = 30 

    objCDOSYSCon.Fields.Update 

    'Use our new configurations for our mailer 
    Set objCDOSYSMail.Configuration = objCDOSYSCon 

    strSpecFile = Application("px683_network_downloads_specs") & strSpecFileName 

    objCDOSYSMail.From = "[email protected]" 
    objCDOSYSMail.To = "[email protected]" 
    objCDOSYSMail.Subject = "A subject" 
    objCDOSYSMail.HTMLBody = "Some text for the body" 

    'Normal level of importance 
    objCDOSYSMail.Send 

    set objCDOSYSMail = nothing 
    set objCDOSYSCon = nothing 

나는 행운도없이 포트 25로 시도했다. SSL을 전혀 사용하지 않는 다른 이메일 서비스 (Office365가 아닌 로컬 서비스)를 사용하면 문제가 없습니다. (usessl을 주석 처리하고 포트를 25로 변경하십시오). 또한 ASP.Net 응용 프로그램에서 완벽하게 실행되는 다른 전자 메일 서비스를 사용하려고하면 같은 문제가 발생합니다.이 다른 전자 메일 서비스는 포트 25와 SSL을 사용하며 Office365 서비스는 아닙니다.

+0

"서비스 준비 완료"응답을받지 못한 경우 명령 행에서'telnet smtp.office365.com 587'을 입력하면 인터넷 제공 업체가 포트를 차단하고 있습니다. – Henry

+1

나는 이미 그것을 시도하고 그것을 언급하는 것을 잊어 버렸다. 나는 Service Ready를 얻는다. 그러나 당신이 그것을 뒤로 가져 왔던 이래로 나는 재 시도했고, 약간의 파기 (로그인하려고 노력했다)를했다. 내가 들어올 때 : MAIL FROM : 명령에 응답을 입력하면 2 개의 응답이 있는데, 처음에는 "잘못된 주소"로되어있어서 다시 시도하고 "클라이언트가 MAIL FROM 중에 익명의 메일을 보내도록 인증되지 않았습니다"라는 메시지가 나타납니다. – Atlim

답변

0

마지막으로 응용 프로그램을 Windows Server 2012 컴퓨터로 이동하여이 작업을 수행 할 수있었습니다. 서버 사이에서 오래된 것을 움직이는 두 개의 루프를 뛰어 넘어야했지만 작동시킬 수있었습니다.

포트 25 만 사용할 수 있었지만 587이 작동하지 않습니다. 원래 서버에서 25 번 포트를 시도했지만 그 중 하나가 작동하지 않았다는 점을 명심하십시오.

0

이전에이 문제가있었습니다. 기본적으로 서버에서 메일 전송을 사용하도록 인증되지 않았습니다.

SMTP 서버가 아웃 바운드 메일 (예 : 메일 릴레이 중단)을 보내지 못하거나 사용자 이름과 비밀번호가 잘못되었거나 사용중인 포트가 메일을 보내기 위해 더 높은 보안 수준을 필요로합니다. 나중에 Office365가 SSL 인증을 요구할 수도 있습니다.

다른 모든 것이 실패하면 제 3 자 제공 업체를 사용해 볼 수 있습니다. 우리는 £ 4.35 패키지에 SendInBlue를 사용합니다. 시스템을 통해 최대 4 만 개의 이메일을 보낼 수 있습니다. 우리는 제 3 자에게 메일을 보내는 것이 메일 전송 기능을 중지시키는 서버 설정에 대한 문제를 완전히 제거한다는 것을 알았습니다. 우리는 이제이 기능을 Classic ASP 및 PHP 사이트 모두에 사용합니다.

희망이 있습니다.

+0

올바른 온라인 아이디와 비밀번호는 Microsoft 온라인 로그인 페이지를 사용하여 Office365에 아무런 문제없이 로그인 할 수 있고 로그인 한 경우 Office365 이메일 계정에서 제공하는 설정 정보를 기반으로 포트, SMTP 서버 및 TLS를 사용하고 있습니다.우리는 비 VBScript 프로그램에서 완벽하게 작동하는 다른 전자 메일 서비스를 가지고 있지만 다른 전자 메일 서비스는 여기에서 작동하지 않습니다. 따라서 다음에 추측 할 수있는 것은 비 SSL 서비스를 사용할 수 있기 전에 전자 메일을 허용하지 않는 서버 여야한다는 것입니다. 완벽하게 잘 작동합니다. – Atlim

0

Office 365 및 CDO를 사용하는 경우 인증을 사용하는 경우에도 포트 25를 사용해야합니다. 귀하의 코드를 살펴보면, 포트가 유일한 것으로 생각하지만, 여기에 시도하고 테스트 한 구성이 있습니다.

Set iConfg = Server.CreateObject("CDO.Configuration") 
Set Flds = iConfg.Fields 
With Flds 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com" 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword" 
     .Update 
End With 
objMail.Configuration = iConfg 
+0

정확히 똑같은 문제로 Port 25를 시도한 코드 조각 바로 뒤에서 언급했습니다. 귀하의 코드 스 니펫을 시도했지만 똑같은 문제가 발생합니다. – Atlim

+0

제가 말했듯이, 그 구성은 분명히 다른 uid와 패스워드를 가지고 저에게 효과적입니다. "전송이 서버에 연결하지 못했습니다"라는 메시지를 유발할 수있는 모든 종류의 것들이 있습니다. 자신의 웹 서버를 운영하는 사람들과 이야기 할 가치가 있습니다. 여기에 관심있는 링크가 있습니다. https://clicdatacoder.wordpress.com/2012/07/13/sending-smtp-mail-via-office-365-exchange-using-cdo-message-and-other-applications/ – John

관련 문제