Модификация тела письма (плагин Outlook) - PullRequest
0 голосов
/ 08 июля 2019

Я создаю надстройку, которая читает тела электронной почты для сокращений, а затем модифицирует тело html, чтобы при наведении курсора на найденную аббревиатуру оно давало вам определение. У меня не было проблем с логикой, и я даже нашел способ получить исходный HTML-код тела, используя Office.context.mailbox.item.body.getAsync("html", function callback(result) {..}. Затем я проверил его в новом окне, чтобы убедиться, что оно было изменено правильно.

Мой следующий шаг - поместить html-код обратно в исходное окно, чтобы для всех электронных писем, которые я получаю, все сокращения в моей базе данных при наведении указывали на определение. Я попытался использовать метод .setAsync(), предоставленный на этой странице здесь , чтобы вернуть HTML-код обратно, но я не могу заставить его работать или не правильно понимаю.

Вот основы моего кода

'use strict';
funciton(){
  function readJSONFile(file, callback) {
    //read my database of acronyms
  }

  function replace(body, acronyms) {
    //replace acronyms in body with elements that have definitions
  }

  Office.onReady(function () {
    // window is ready
    $(document).ready(function () {
        var emailBody;
        Office.context.mailbox.item.body.getAsync("html", function callback(result) {
            //Contains the email body
            emailBody = result.value;
            readJSONFile("data.json", function (acronyms) {
                //Replaces acronyms in email body based on the JSON file
                emailBody = replace(emailBody, JSON.parse(acronyms));
                //I tried this, didn't seem to do anything
                Office.context.mailbox.item.body.setAsync(emailBody, { coercionType: "html" }, function callback(result));
                //I also tried this, just in case I read the syntax wrong
                Office.context.mailbox.item.body.setAsync(emailBody, "html", function callback(result));
                });
            });
        });
    });
}()

Примечание: emailBody содержит структуру html, поэтому, когда я перемещаю ее в другое окно, которое я создал для проверки функциональности кода, если оно читается как html. Я пытаюсь сделать то же самое в исходном окне тела письма.

1 Ответ

0 голосов
/ 09 июля 2019

Вот пример кода, который вы можете использовать как основу для внесения изменений в тело сообщения:

function appendText() {
    Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html,function (result) {
        // make any modifications to the message body
        var newHtml = result.value.replace("</body>", "<br/ >Best regards!</body>")
        // set the messasge body back
        Office.context.mailbox.item.body.setAsync(newHtml, { coercionType: Office.CoercionType.Html });
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...