Невозможно добавить вложение в надстройку Office JS - PullRequest
0 голосов
/ 17 октября 2018

Я создал EWS-запрос на вложение электронного письма, но получил от него пустое значение, но получил статус «успешно».Кстати.

Сначала я создал запрос makeEwsRequestAsync для сохранения электронной почты в черновик, и он уже работает, но когда я пытаюсь добавить в него вложение, используя этот запрос, он не добавляет.Любые предложения или помощь, пожалуйста

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
function createAttachment() {

    var request =
        '<?xml version="1.0" encoding="utf-8"?>' +
        '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
        '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:Body>' +
        '    <CreateAttachment xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
        '      <ParentItemId Id="'+itemID+'" />' +
        '      <Attachments>' +
        '        <t:ItemAttachment>' +
        '          <t:Name>Please</t:Name>' +
        '           <t:Message>' +
        '               <t:ItemClass>IPM>Note</t:ItemClass>' +
        '               <t:Subject>test</t:Subject>' +
        '               <t:Body BodyType="Text">my test</t:Body>' +
        '           </t:Message>' +
        '        </t:ItemAttachment>' +
        '      </Attachments>' +
        '    </CreateAttachment>' +
        '  </soap:Body>' +
        '</soap:Envelope>';
    return request;
}

</script>

Это мой запрос на создание приложения EWS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">


    function composeMail(emailSubject, emailDescription) {
        var subject= subjectPrefix + " " + emailSubject;
        var request =
            '<?xml version="1.0" encoding="utf-8"?>' +
            '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
            '               xmlns:xsd="http://www.w3.org/2001/XMLSchema"' +
            '               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"' +
            '               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"' +
            '               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
            '  <soap:Header>' +
            '    <RequestServerVersion Version="Exchange2007_SP1" />' +
            '  </soap:Header>' +
            '  <soap:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
            '    <m:CreateItem MessageDisposition="SaveOnly">' +
            '      <m:SavedItemFolderId>' +
            '        <t:DistinguishedFolderId Id="drafts" />' +
            '      </m:SavedItemFolderId>' +
            '      <m:Items>' +
            '            <t:Message>' +
            '              <t:ItemClass>IPM.Note</t:ItemClass>' +
            '              <t:Subject>' + subject + '</t:Subject>' +
            '              <t:Body BodyType="HTML">' + emailDescription + '</t:Body>' +
            '              <t:Importance>Low</t:Importance>' +
            '              <t:ToRecipients>' +
            '                <t:Mailbox>' +
            '                  <t:EmailAddress>' + recepient + '</t:EmailAddress>' +
            '                </t:Mailbox>' +
            '              </t:ToRecipients>' +
            '              <t:IsRead>false</t:IsRead>' +
            '            </t:Message>' +
            '          </m:Items>' +
            '        </m:CreateItem>' +
            '  </soap:Body>' +
            '</soap:Envelope>';
        return request;
    }
</script>

Это мой запрос на создание электронной почты EWS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
    function send() {
        var request =
            '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
            '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:Body>' +
            '    <SendItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"' +
            '    SaveItemToFolder="true">' +
            '      <ItemIds>' +
            '        <t:ItemId Id="' + itemID + '"/>' +
            '      </ItemIds>' +
            '    </SendItem>' +
            '  </soap:Body>' +
            '</soap:Envelope>';
        return request;
    }

</script>

Это мой запрос на отправку EWS, и я звоню им, используя

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
    function sendRequest(emailSubject, emailDescription, emailItemID) {
        // Create a local variable that contains the mailbox.
        try {
            itemID = Office.context.mailbox.item.itemId;
            Office.context.mailbox.makeEwsRequestAsync(
                composeMail(emailSubject, emailDescription), callbackCompose);
            Office.context.mailbox.makeEwsRequestAsync(
                createAttachment(), callbackAttachment);
            Office.context.mailbox.makeEwsRequestAsync(
                send(), callbackSend);
        } catch (error) {
            $("#id-error-msg").text(error);
        }
</script>

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Если вы хотите манипулировать электронной почтой из режима составления, вы можете обратиться к этой документации от команды Microsoft.Я считаю, что это гораздо проще и понятнее.

- https://docs.microsoft.com/en-us/outlook/add-ins/add-and-remove-attachments-to-an-item-in-a-compose-form

В противном случае, если вы хотите манипулировать электронной почтой из режима чтения.Для этого может быть два варианта.

Одним из них является использование Rest API.Тем не менее, есть некоторые требования, которые вам нужно выполнить, чтобы сделать этот запрос.Мой не работает на рабочем столе, но работает в Интернете, но вы можете обратиться к этой ссылке, если хотите попробовать: https://docs.microsoft.com/en-us/outlook/add-ins/use-rest-api

При возникновении проблемы минимального требования.Я нашел способ заставить его работать, используя запрос веб-службы Exchange (EWS).В основном он использует файлы XML для отправки запроса на обмен веб-службы и возврата ответа.

Однако я обнаружил, что мне нужно получить MimeContent этого письма, чтобы иметь возможность добавить его в мой XML-запрос CreateItem.Пожалуйста, проверьте эту ссылку для получения дополнительной информации.https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getitem-operation-email-message

Затем я добавил существующий элемент в новое письмо, используя его MimeContent.Вы можете проверить это, используя эту ссылку: https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-add-attachments-by-using-ews-in-exchange

0 голосов
/ 18 октября 2018

Для меня это выглядит как плохой XML, например,

'<t:ItemClass>IPM>Note</t:ItemClass>' +

приведет к ошибке проверки на сервере (вы должны увидеть, что в ответах EWS от сервера, например, ваш запрос должен быть

'<t:ItemClass>IPM.Note</t:ItemClass>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...