Russian Qt Forum
Апрель 19, 2024, 02:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QNetworkAccessManager и MS Exchange  (Прочитано 2900 раз)
Apktyc
Самовар
**
Offline Offline

Сообщений: 132


Просмотр профиля
« : Август 31, 2021, 23:49 »

Добрый день.

Ни у кого не было попыток задружить этих двух животных?

Пытаюсь отправить письмо через Exchange 13.

Отсюда 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  и все заработало.
Правда что, утро вечера мудренее.
« Последнее редактирование: Сентябрь 01, 2021, 09:00 от Apktyc » Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #1 : Апрель 25, 2022, 20:47 »

А можно было бы не писать никакого кода, а использовать зерокодерский инструмент Integromat.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.