Как отправить электронное письмо в веб-надстройку Outlook с размером вложения> 1 МБ? - PullRequest
0 голосов
/ 03 апреля 2019

Сейчас я разрабатываю надстройку для веб-сайта outlook, которая сообщает о спаме по электронной почте, отправляя письмо с прикрепленным подозрительным письмом.Команды, используемые в надстройке, в основном EWS SOAP команда.Однако на makeEwsRequestAsync существует ограничение, что команда SOAP не может превышать 1 МБ

. Чтобы решить эту проблему, я попытался вызвать EWS внешним сервером, используя getCallbackTokenAsync, чтобы получитьEWS токен и передать на внешний сервер.Но использование токена EWS на внешнем сервере не может поддерживать команды CreateItem и CreateAttachment.

Вот API-интерфейс SOAP, который я использовал для создания электронной почты с вложением для отправки, где {n} - заполнитель, замененный накод:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Header>
    <RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SendAndSaveCopy">
      <m:Items>
        <t:Message>
        <t:Subject>{0}</t:Subject>
        <t:Body BodyType="Text">{1}</t:Body
        <t:Attachments>
            <t:FileAttachment>
              <t:Name>{2}.eml</t:Name>
              <t:IsInline>false</t:IsInline>
              <t:ContentType>message/rfc822</t:ContentType>
              <t:Content>{3}</t:Content>
            </t:FileAttachment>
        </t:Attachments>
          <t:ToRecipients>{4}</t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

И следующий код является ajax для отправки запроса на мой внешний сервер:

        $.ajax({
            url: "https://localhost:5001/api/ews",
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({
                "ewsUrl":ewsUrl,
                "ewsAuth":ewsAuthorizationHeaderValue,
                "ewsRequest":ewsCmd
            }),
            success: function(result) {
                var xmlDoc = parseEwsResponse(apiKey, result);
                if (xmlDoc != false) {
                    successListener(xmlDoc);
                }
                else
                {
                    failureListener();
                }
            },
            error: function(jqXHR, textStatus, errorThrown) {
                showNotification("EWS Error (" + apiKey + ")", "Error on accessing EWS: " + textStatus);
                failureListener();
            }
        });

Есть ли какие-либо настройки, которые мне могут понадобиться, или любой обходной путь для этого?Спасибо.

Обновлено:

Поскольку используется среда On-Prem Exchange 2013 server.REST API не может быть решением в нашем случае.

...