Сейчас я разрабатываю надстройку для веб-сайта 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 не может быть решением в нашем случае.