Ошибка отправки электронной почты с использованием CDO через порт 587 (TLS)

есть ли какая-нибудь хитрость для отправки почты с CDO через порт 587 (порт использует протокол безопасности TLS). Это мой код на C ++:

CDO::IMessagePtr iMsg(__uuidof(CDO::Message));
CDO::IConfigurationPtr iConf = iMsg->GetConfiguration();
CDO::FieldsPtr iFields;
_bstr_t empty("");
iConf->Load(CDO::cdoIIS,empty);  // this string constant from import
iFields = iConf->Fields;

iFields->Item["https://schemas.microsoft.com/cdo/configuration/smtpserver"]->Value = _variant_t(szServer);
iFields->Item["https://schemas.microsoft.com/cdo/configuration/smtpserverport"]->Value    = _variant_t(587);
iFields->Item["https//schemas.microsoft.com/cdo/configuration/sendusing"]->Value           = 2;
iFields->Item["https//schemas.microsoft.com/cdo/configuration/smtpauthenticate"]->Value = _variant_t(1); // Basic
iFields->Item["https//schemas.microsoft.com/cdo/configuration/sendusername"]->Value    = _variant_t(szUser);
iFields->Item["https//schemas.microsoft.com/cdo/configuration/sendpassword"]->Value     = _variant_t(szPassword);

if(iUseSSLTLS == 2)
iFields->Item["https//schemas.microsoft.com/cdo/configuration/sendtls"]->Value = _variant_t(true);
else
iFields->Item["https//schemas.microsoft.com/cdo/configuration/smtpusessl"]->Value = _variant_t(true);

iFields-> Обновить ();
и т.д … и т.д …
Если я использую этот код с stmp.gmail.com:

  • сервер: smtp.gmail.com,
  • порт: 587,
  • sndtls = true,
  • учетная запись: моя учетная запись Gmail,
  • пароль:

Я получаю следующий ответ:

  • Код = 8004020е,
  • Кодовое значение = Невозможно модифицировать, чтобы исключить и забыть о том, что нужно использовать утилиту COM + Admin SDK,
  • Источник = (ноль),
  • Описание = Indirizzo del mittente respinto dal server. Risposta Del Server: 530 5.7.0 Сначала нужно выполнить команду STARTTLS. y2sm3575389wme.12 — gsmtp,

(извините … часть сообщения написана на итальянском языке, но посмотрите на полужирный / курсив)
Очевидно, что если я настраиваю Outlook 2010, используя те же параметры, он работает отлично. Еще одна вещь, если я использую порт 465 и SSL:

  • сервер: smtp.gmail.com,
  • порт: 465,
  • smtpusessl = true,
  • учетная запись: моя учетная запись Gmail,
  • пароль:

код работает нормально, но мне нужно настроить порт 587 и TLS.


В конце концов я попробовал smtpusessl и sendtls вместе, установив их в true:

iFields->Item["https//schemas.microsoft.com/cdo/configuration/sendtls"]->Value = _variant_t(true);
iFields->Item["https//schemas.microsoft.com/cdo/configuration/smtpusessl"]->Value = _variant_t(true);

и я получаю следующую ошибку:

  • Код = 80040213
  • Значение кода = IDispatch error # 19
  • Источник = CDO.Message.1
  • Описание = Транспорт не смог подключиться к серверу.

Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]