Добрый день.
Ни у кого не было попыток задружить этих двух животных?
Пытаюсь отправить письмо через Exchange 13.
Отсюда Get started with EWS client applications (https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-client-applications) взял пример SOAP запроса и после чего пытаюсь выполнить такой код:
auto Manager = new QNetworkAccessManager;
connect(Manager, &QNetworkAccessManager::authenticationRequired, this, [=](QNetworkReply* /*Reply*/, QAuthenticator* Auth){
qDebug() << "Authentication";
Auth->setUser("login");
Auth->setPassword("password");
});
connect(Manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply* Reply){
if (Reply->error() == QNetworkReply::NoError)
{
qDebug() << Reply->readAll();
}
else
{
qDebug() << "Error:" << Reply->errorString();
}
});
QString CreateItemSOAPRequest =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
" xmlns:m=\"https://schemas.microsoft.com/exchange/services/2006/messages\" \n"
" xmlns:t=\"https://schemas.microsoft.com/exchange/services/2006/types\" \n"
" xmlns:soap=\"https://schemas.xmlsoap.org/soap/envelope/\">\n"
" <soap:Header>\n"
" <t:RequestServerVersion Version=\"Exchange2007_SP1\" />\n"
" </soap:Header>\n"
" <soap:Body>\n"
" <m:CreateItem MessageDisposition=\"SendAndSaveCopy\">\n"
" <m:SavedItemFolderId>\n"
" <t:DistinguishedFolderId Id=\"sentitems\" />\n"
" </m:SavedItemFolderId>\n"
" <m:Items>\n"
" <t:Message>\n"
" <t:Subject>Test subject</t:Subject>\n"
" <t:Body BodyType=\"HTML\">Simple text test</t:Body>\n"
" <t:ToRecipients>\n"
" <t:Mailbox>\n"
" <t:EmailAddress>*@*.ru</t:EmailAddress>\n"
" </t:Mailbox>\n"
" </t:ToRecipients>\n"
" </t:Message>\n"
" </m:Items>\n"
" </m:CreateItem>\n"
" </soap:Body>\n"
"</soap:Envelope>\n";
QNetworkRequest Request = QNetworkRequest(QUrl("https://<servername>/EWS/Exchange.asmx"));
Request.setHeader(QNetworkRequest::ContentTypeHeader, "text/xml; charset=utf-8");
Manager->post(Request, CreateItemSOAPRequest.toUtf8());
Авторизация проходит и сервер возвращает: 400 Bad Request
Хотелось бы понять куда копать.
UPD: все упиралось в использовании https в <soap:Envelope>, заменил на http и все заработало.
Правда что, утро вечера мудренее.
А можно было бы не писать никакого кода, а использовать зерокодерский инструмент Integromat.