#outlook #office-js #outlook-addin #outlook-web-addins
Вопрос:
Я тестировал функцию надстройки Outlook при отправке на Chromium Edge. Но по какой-то причине он никогда не вызывает функцию validateBody.
command.js
let mailboxItem;
Office.initialize = function (reason) {
mailboxItem = Office.context.mailbox.item;
};
// Determine whether the body contains a specific set of blocked words. If it contains the blocked words, block email from being sent. Otherwise allow sending.
// <param name="asyncResult">ItemSend event passed from the calling function.</param>
async function checkBodyOnlyOnSendCallBack(asyncResult) {
const listOfBlockedWords = new Array("dammit", "porra", "caralho");
const wordExpression = listOfBlockedWords.join("|");
// b to perform a "whole words only" search using a regular expression in the form of bwordb.
// i to perform case-insensitive search.
const regexCheck = new RegExp("\b(" wordExpression ")\b", "i");
const checkBody = regexCheck.test(asyncResult.value);
if (checkBody) {
mailboxItem.notificationMessages.addAsync("NoSend", {
type: "errorMessage",
message: "Blocked words have been found in the body of this email. Please remove them.",
});
// Block send.
asyncResult.asyncContext.completed({ allowEvent: false });
}
// Allow send.
asyncResult.asyncContext.completed({ allowEvent: true });
}
// Entry point for Contoso Message Body Checker add-in before send is allowed.
// <param name="event">ItemSend event is automatically passed by on-send code to the function specified in the manifest.</param>
function validateBody(event) {
mailboxItem.body.getAsync("html", { asyncContext: event }, checkBodyOnlyOnSendCallBack);
}
manifest.xml
<FunctionFile resid="Commands.Url" />
<ExtensionPoint xsi:type="Events">
<Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateBody" />
</ExtensionPoint>
...
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>
</bt:Urls>
Office.initialize всегда вызывается, но никогда не проверяется. Но, следовательно, я просто получаю сообщение:
Извините, мы не смогли получить доступ к тесту. Убедитесь, что у вас есть сетевое подключение. Если проблема не устранится, пожалуйста, повторите попытку позже. Проверка надстройки предотвратила отправку этого элемента.
Как я могу исправить эту проблему?
Изменить: Это сообщение об ошибке в Windows Outlook
Версия Outlook: Microsoft® Outlook® 2019 MSO (16.0.14326.20164) 64-разрядная версия Это сообщение об ошибке в Outlook web
Комментарии:
1. Есть ли у вас какие-либо проблемы с запуском образца надстройки, упомянутого в сообщении?
2. Если честно. Результат тот же, что и у того, что я сделал. Требуется ли надстройка «При отправке» для какой-либо специальной конфигурации? Потому что я устанавливаю так же, как и с другим, что я сделал то же самое. Я устанавливаю надстройку через манифест, но когда я пытаюсь отправить сообщение, оно повторяет то же поведение
3. @Евгений Астафьев Я полагаю, что понимаю свою ошибку, я использую свою бесплатную учетную запись Outlook live.com в качестве среды тестирования, поэтому я не могу использовать при отправке, потому что моя электронная почта не позволяет это делать правильно?
4. Какой клиент Outlook вы используете (Mac, Win32, OWA)? Список поддерживаемых клиентов и платформ для OnSend можно найти здесь: docs.microsoft.com/en-us/office/dev/add-ins/outlook/…
5. Я использую OWA. Я попробовал в Windows, но снова получил ошибку, но другую: … не удалось завершить
Ответ №1:
Извините, мы не смогли получить доступ к тесту. Убедитесь, что у вас есть сетевое подключение. Если проблема не устранится, пожалуйста, повторите попытку позже. Проверка надстройки предотвратила отправку этого элемента.
Это хороший показатель того, что среда выполнения OfficeJS не может найти функцию, указанную в файле манифеста. Убедитесь, что веб-приложение запущено по указанному в URL-адресе манифеста, а функция общедоступна.
По умолчанию, если обратный вызов не обнаружен (не удалось связаться с функцией), операция отправки блокируется, и пользователям отображается уведомление.
Я бы предложил поиграть с образцом проекта, доступным на GitHub, прежде чем что-либо менять в надстройке или создавать свой собственный и изменять его.