Исключения CDOSYS при первой возможности для raw_Send () и raw_GetStream ()

При использовании CDO для отправки электронных писем я беру четыре исключения из первых шансов, по два для каждого IMessage::Send() а также IMessage::GetStream() (все бесполезно «долго в памяти места такие-то«). Исключения случаются в коде, недоступном для меня, чтобы пройти через него, но каждый обрабатывается, и в конечном итоге я получаю обратно HRESULT из S_OK и письмо успешно отправлено.

Я имел обыкновение сталкиваться с исключениями первого шанса при настройке конфигурации, как эта проблема упоминает и решил это так же (использовал Append() для каждого элемента), так что я думаю, что есть некоторая информация о настройке, которую мне не хватает, что вызывает проблемы с Send()/GetStream(),

Вот суть того, что у меня есть:

IMessagePtr message(__uuidof(Message));

IConfigurationPtr config = message->Configuration;
FieldsPtr configFields = config->Fields;

configFields->Item[cdoSendUsingMethod]->Value   = _variant_t(cdoSendUsingPort);
configFields->Append(cdoSMTPServerPort,        DataTypeEnum::adBSTR, SysStringLen(cdoSMTPServerPort),        FieldAttributeEnum::adFldUnspecified, _variant_t(m_lSMTPServerPort));
configFields->Append(cdoSMTPServer,            DataTypeEnum::adBSTR, SysStringLen(cdoSMTPServer),            FieldAttributeEnum::adFldUnspecified, _variant_t(m_sSMTPServer));
configFields->Append(cdoSMTPConnectionTimeout, DataTypeEnum::adBSTR, SysStringLen(cdoSMTPConnectionTimeout), FieldAttributeEnum::adFldUnspecified, _variant_t(m_lSMTPConnectionTimeout));
configFields->Append(cdoSMTPAuthenticate,      DataTypeEnum::adBSTR, SysStringLen(cdoSMTPAuthenticate),      FieldAttributeEnum::adFldUnspecified, _variant_t(cdoBasic));
configFields->Append(cdoSendUserName,          DataTypeEnum::adBSTR, SysStringLen(cdoSendUserName),          FieldAttributeEnum::adFldUnspecified, _variant_t(m_sUserName));
configFields->Append(cdoSendPassword,          DataTypeEnum::adBSTR, SysStringLen(cdoSendPassword),          FieldAttributeEnum::adFldUnspecified, _variant_t(m_sPassword));
configFields->Update();

message->put_To(bsRecipients);
message->put_From(bsFrom);
message->put_Subject(bsSubject);
message->put_TextBody(bsMessage);
message->Send();
_StreamPtr stream = message->GetStream();

Это насколько я вижу в cdosys.tli

inline HRESULT IMessage::Send ( ) {
HRESULT _hr = raw_Send();
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
}

inline _StreamPtr IMessage::GetStream ( ) {
struct _Stream * _result = 0;
HRESULT _hr = raw_GetStream(&_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _StreamPtr(_result, false);
}

Любая подсказка, почему я вижу эти исключения? Кажется странным, что исключения используются для решения проблем, а не просто проверяют сначала, не зная, почему Microsoft так настроила.

0

Решение

Возможно, вам придется настроить фильтры исключений в Visual Studio (если вы используете VS, что, кажется, имеет место). Перейдите в Главное меню -> Dubug -> Windows -> Настройки исключений и снимите флажок с соответствующим типом исключений, чтобы VS не прерывался при их выбросе.

0

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

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

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