2016-09-14 3 views
1

Я знаю, что есть много вопросов с этим, но у меня нет ответа, который работает для меня.ASP Classic Email '80040213' Транспорт не смог подключиться к серверу

Мое приложение ASP Classic, на котором он работает, является Windows Server 2000 (очень старый, я знаю), я использую сервер Office365, и я использую информацию, предоставленную Office365, когда я вхожу в систему по электронной почте (Порт 587, правильное имя пользователя и пароль, правильный SMTP-сервер, TLS установлен в true).

Я всегда получаю сообщение «CDO.Message.1 error» 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', если вы не получили ответ« Service Ready », ваш интернет-провайдер блокирует порт. – Henry

+1

Я уже пробовал это и просто забыл упомянуть об этом. Я получаю Service Ready, но с тех пор, как вы вернули его, я повторил попытку и попытался войти в систему. Я вхожу, но когда я вхожу в команду MAIL FROM: command, я получил 2 ответа, сначала был «неверный адрес», который был нечетным, поэтому я повторил, и я получил «Клиент не был аутентифицирован для отправки анонимной почты во время MAIL FROM» – Atlim

ответ

0

Я, наконец, смог получить это, переместив приложение на машину Windows Server 2012. Мне пришлось перепрыгнуть через пару петель, которые приходят с перемещением чего-то старого между серверами, но я смог заставить его работать.

Я мог использовать порт 25, 587 не работает. Имейте в виду, я попробовал порт 25 на исходном сервере, и он тоже не работал.

0

У меня был этот вопрос раньше. В основном вы не авторизованы для использования почтового транспорта на сервере.

Либо ваш SMTP-сервер не может отправлять исходящую почту (например, для остановки ретрансляции почты), вы являетесь неправильным именем пользователя и паролем, или для порта, который вы используете, требуется более высокий уровень безопасности для отправки почты. В более позднем экземпляре может случиться, что Office365 требует SSL auth ... возможно, стоит посмотреть там.

Если все остальное не удается, вы можете попробовать использовать сторонний провайдер. Мы используем SendInBlue в их пакете £ 4.35. Вы можете отправлять до 40 000 писем через свою систему. Мы обнаружили, что отправка почты третьему лицу полностью устраняет проблемы по настройкам сервера, останавливая функцию переноса почты. Мы используем это как для классического ASP, так и для PHP-сайтов.

Надеюсь, что это поможет.

+0

У меня есть правильное имя пользователя и пароль, так как я могу войти в Office365 с помощью онлайн-страницы входа в систему Microsoft без проблем, и я использую порт, SMTP-сервер и TLS на основе информации о настройках, предоставленной учетной записью электронной почты Office365 при входе в систему.У нас есть другие службы электронной почты, которые отлично работают в программах, отличных от 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

Я упомянул сразу после моего фрагмента кода, что я попробовал порт 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

 Смежные вопросы

  • Нет связанных вопросов^_^