Ошибка «80040211» Использование CDO.Message для отправки электронных писем в Windows Server 2012 R2

Используя следующие те же файлы VBScript/ASP, мне удается отправить электронное письмо только на ПК с Win7. При запуске того же сценария на Windows Server 2012 R2 со всеми отключенными брандмауэрами мне не удалось отправить электронное письмо. Существует антивирусный сканер McAfee, но даже когда я отключил его, я также не смог отправить электронное письмо. Я также установил Allow less secure apps: ON в учетной записи Gmail, но по-прежнему получаю error on '80040211' Пожалуйста, помогите мне, так как у меня закончились идеи для устранения неполадок.

Dim ObjSendMail

Set ObjSendMail = CreateObject("CDO.Message")

ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "True"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "****@gmail.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****"
ObjSendMail.Configuration.Fields.Update

ObjSendMail.Subject = "Testing Send Email"
ObjSendMail.From = "****@gmail.com"
ObjSendMail.To = "[email protected]"
ObjSendMail.HTMLBody = "Send mail successful"
ObjSendMail.Send

Set ObjSendMail = Nothing

response.Write "Email Sent Successfully"

После настройки telnet я набрал telnet smtp.gmail.com 587 и получил следующий ответ:

Изображение


person Hanz Cheah    schedule 09.07.2018    source источник
comment
Ваши настройки выглядят нормально, если порт 465 открыт. Я подозреваю, что это не общая проблема с win server 2012, а скорее конкретная проблема с настройкой вашего сервера. Кто предоставляет ваш сервер - может быть, у них есть собственный smtp-ретранслятор, который вы можете использовать?   -  person John    schedule 09.07.2018
comment
Возможный дубликат https://stackoverflow.com/q/23224631/1630171.   -  person Ansgar Wiechers    schedule 09.07.2018
comment
Не связанное с этим примечание: я бы рекомендовал изменить порт с 465 (SMTPS) на 587 (Submission), потому что первый устарел уже довольно давно. Хотя вряд ли это является причиной проблемы. В прошлый раз, когда я проверял, Gmail по-прежнему поддерживает оба варианта.   -  person Ansgar Wiechers    schedule 09.07.2018
comment
Вы убедились, что действительно можете подключиться к smtp.gmail.com:465 со своего сервера?   -  person Ansgar Wiechers    schedule 09.07.2018
comment
@AnsgarWiechers Как на самом деле проверить подключение к smtp.gmail.com:465?   -  person Hanz Cheah    schedule 11.07.2018
comment
@AnsgarWiechers Я связался с ИТ-персоналом, отвечающим за сервер, и подтвердил, что порт 465 не заблокирован. Разве у вас нет других способов сделать предложение?   -  person Hanz Cheah    schedule 11.07.2018
comment
telnet smtp.gmail.com 465. Если вы также хотите проверить SSL, вам понадобится что-то вроде OpenSSL для Windows, поэтому вы можете сделать openssl s_client -connect smtp.gmail.com:465.   -  person Ansgar Wiechers    schedule 11.07.2018
comment
@AnsgarWiechers Я пробовал telnet smtp.gmail.com 465, но не получил никакого ответа. Однако я меняю его на 587 и получаю приведенный выше ответ.   -  person Hanz Cheah    schedule 16.07.2018
comment
@AnsgarWiechers, не могли бы вы рассказать немного об OpenSSL? Как проверить с помощью OpenSSL?   -  person Hanz Cheah    schedule 16.07.2018
comment
Я уже дал тебе команду, которую нужно запустить. Однако сначала вам нужно установить версию OpenSSL для Windows.   -  person Ansgar Wiechers    schedule 16.07.2018
comment
И если порт 587 отвечает, а порт 465 не отвечает, возможно, Google удалил поддержку SMTPS из Gmail (или какой-то брандмауэр просто блокирует доступ к этому порту). Измените порт в вашем скрипте на 587.   -  person Ansgar Wiechers    schedule 16.07.2018
comment
@Я перешел на 587, но теперь получаю CDO.Message.1 error '80040213' The transport failed to connect to the server.   -  person Hanz Cheah    schedule 17.07.2018
comment
Я думаю, что Gmail заблокирован. Я изменился, чтобы использовать внутренний smtp и порт компании, и теперь он работает. Спасибо @AnsgarWiechers   -  person Hanz Cheah    schedule 17.07.2018


Ответы (2)


Gmail заблокирован внутренним брандмауэром. Я переключился на их внутренний smtp и порт. Мне удалось отправить электронные письма.

person Hanz Cheah    schedule 18.07.2018

Используйте этот код

<%

Set myMail=CreateObject("CDO.Message")
myMail.BodyPart.Charset = "UTF-8"


myMail.Subject= Your Message Subject
myMail.From= "[email protected]"
myMail.To=Receiver Email Address
myMail.CreateMHTMLBody "Test Email Subject"


myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2

myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")= SMTP_SERVER
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")=SMTP_Email_Username
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")=Smtp_Email_Password
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing

%>

person Keivan Alipoor    schedule 09.08.2018