есть ли какой-нибудь трюк для отправки почты с 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 = истина,
- аккаунт: моя учетная запись Gmail,
- пароль:
Получаю такой ответ:
- Код = 8004020e,
- Значение кода = Невозможно изменить или удалить некорректный результат, который уже был обновлен с помощью COM + Admin SDK,
- Источник = (ноль),
- Описание = Indirizzo del mittente respinto dal server. Сообщение сервера: 530 5.7.0 Сначала необходимо ввести команду STARTTLS. y2sm3575389wme.12 - gsmtp,
(извините ... часть сообщения на итальянском языке, но обратите внимание на полужирный / курсив) Очевидно, что если я настрою Outlook 2010 с теми же параметрами, он будет работать отлично. Еще одна вещь, если я использую порт 465 и SSL:
- сервер: smtp.gmail.com,
- порт: 465,
- smtpusessl = истина,
- аккаунт: моя учетная запись 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 # 19
- Источник = CDO.Message.1
- Описание = Транспортному транспорту не удалось подключиться к серверу.
Спасибо.