Автоматическое проверка для вложения перед отправкой сообщения
Никогда не пропускайте прикреплять важный документ или фотографию к сообщению снова. В надстройке на основе событий ваши сообщения автоматически проверяются на наличие вложений перед их отправкой, поэтому вы можете быть уверены, что всегда отправляете полную версию.
В следующих разделах описано, как разработать надстройку на основе событий, которая реализует интеллектуальные оповещения для обработки OnMessageSend
события. К концу этого пошагового руководства надстройка автоматически проверка для присоединенного документа или рисунка, указанного в сообщении, и оповещает вас, если они отсутствуют перед отправкой сообщения.
Примечание.
События OnMessageSend
и OnAppointmentSend
были введены в наборе требований 1.12. Дополнительные функциональные возможности и параметры настройки также были добавлены в последующие наборы требований. Чтобы убедиться, что клиент Outlook поддерживает эти события и функции, см. статью Поддерживаемые клиенты и платформы и конкретные разделы, описывающие функции, которые необходимо реализовать.
Настройка среды
Перед началом пошагового руководства убедитесь, что клиент Outlook поддерживает функцию смарт-оповещений. Рекомендации см. в разделе Поддерживаемые клиенты и платформы.
Затем выполните краткое руководство по Outlook, в котором создается проект надстройки с генератором Yeoman для надстроек Office.
Настройка манифеста
Чтобы настроить манифест, выберите вкладку для используемого типа манифеста.
Откройте файл manifest.json .
Добавьте следующий объект в массив extensions.runtimes. Обратите внимание на указанные ниже особенности этой разметки.
-
OnMessageSend
Хотя событие появилось в наборе требований 1.12, параметр minVersion имеет значение 1.15. Это поддерживает использование усовершенствований интеллектуальных оповещений, которые были добавлены в более поздних наборах требований. - Для идентификатора среды выполнения задается описательное имя "autorun_runtime".
- Свойство "code" имеет дочернее свойство page, для которого задано значение HTML-файла, и дочернее свойство script, для которого задается файл JavaScript. Вы создадите или измените эти файлы на последующих шагах. Office использует одно из этих значений или другое в зависимости от платформы.
- Классический Outlook в Windows выполняет обработчик событий в среде выполнения, доступной только для JavaScript, которая загружает файл JavaScript напрямую.
- Outlook в Интернете, на Mac и в новом Outlook в Windows выполняют обработчик в среде выполнения браузера, которая загружает HTML-файл. Этот файл, в свою очередь, содержит
<script>
тег, который загружает файл JavaScript. Дополнительные сведения см. в разделе Среды выполнения в надстройках Office.
- Свойство "время существования" имеет значение "short", что означает, что среда выполнения запускается при активации события и завершает работу по завершении обработчика. (В некоторых редких случаях среда выполнения завершает работу до завершения обработчика. См . раздел Среды выполнения в надстройках Office.)
- Существует действие для запуска обработчика
OnMessageSend
для события. Вы создадите функцию обработчика на следующем шаге.
{ "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.14" } ] }, "id": "autorun_runtime", "type": "general", "code": { "page": "https://localhost:3000/commands.html", "script": "https://localhost:3000/launchevent.js" }, "lifetime": "short", "actions": [ { "id": "onMessageSendHandler", "type": "executeFunction", "displayName": "onMessageSendHandler" } ] }
-
Добавьте следующий массив autoRunEvents в качестве свойства объекта в массиве extensions.
"autoRunEvents": [ ]
Добавьте следующий объект в массив autoRunEvents. Обратите внимание на следующие особенности этого кода:
- Объект события назначает событию
OnMessageSend
функцию обработчика (используя единое имя манифеста события messageSending, как описано в таблице поддерживаемых событий). Имя функции, указанное в actionId, должно соответствовать имени, используемому в свойстве id объекта в массиве actions на предыдущем шаге. - Параметр sendMode имеет значение softBlock. Это означает, что если сообщение не соответствует условиям, заданным надстройкой для отправки, пользователь должен принять меры перед отправкой сообщения. Однако если надстройка недоступна во время отправки, элемент будет отправлен.
{ "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.15" } ], "scopes": [ "mail" ] }, "events": [ { "type": "messageSending", "actionId": "onMessageSendHandler", "options": { "sendMode": "softBlock" } } ] }
- Объект события назначает событию
Совет
- Список параметров режима отправки, доступных для событий и
OnAppointmentSend
, см. вOnMessageSend
разделе Доступные параметры режима отправки. - Дополнительные сведения о манифестах надстроек Outlook см. в статье Манифесты надстроек Office.
Реализация обработки событий
Необходимо реализовать обработку выбранного события.
В этом сценарии вы добавите обработку отправки сообщения. Надстройка будет проверка для определенных ключевых слов в сообщении. Если какое-либо из этих ключевых слов найдено, оно будет проверка для всех вложений. Если вложения отсутствуют, надстройка порекомендует пользователю добавить возможно отсутствующие вложения.
В том же проекте быстрого запуска создайте папку launchevent в каталоге ./src .
В папке ./src/launchevent создайте файл с именемlaunchevent.js.
Откройте файл ./src/launchevent/launchevent.js в редакторе кода и добавьте следующий код JavaScript.
/* * Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. * See LICENSE in the project root for license information. */ function onMessageSendHandler(event) { Office.context.mailbox.item.body.getAsync( "text", { asyncContext: event }, getBodyCallback ); } function getBodyCallback(asyncResult){ const event = asyncResult.asyncContext; let body = ""; if (asyncResult.status !== Office.AsyncResultStatus.Failed && asyncResult.value !== undefined) { body = asyncResult.value; } else { const message = "Failed to get body text"; console.error(message); event.completed({ allowEvent: false, errorMessage: message }); return; } const matches = hasMatches(body); if (matches) { Office.context.mailbox.item.getAttachmentsAsync( { asyncContext: event }, getAttachmentsCallback); } else { event.completed({ allowEvent: true }); } } function hasMatches(body) { if (body == null || body == "") { return false; } const arrayOfTerms = ["send", "picture", "document", "attachment"]; for (let index = 0; index < arrayOfTerms.length; index++) { const term = arrayOfTerms[index].trim(); const regex = RegExp(term, 'i'); if (regex.test(body)) { return true; } } return false; } function getAttachmentsCallback(asyncResult) { const event = asyncResult.asyncContext; if (asyncResult.value.length > 0) { for (let i = 0; i < asyncResult.value.length; i++) { if (asyncResult.value[i].isInline == false) { event.completed({ allowEvent: true }); return; } } event.completed({ allowEvent: false, errorMessage: "Looks like the body of your message includes an image or an inline file. Attach a copy to the message before sending.", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like the body of your message includes an image or an inline file. Attach a copy to the message before sending.\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook)." }); } else { event.completed({ allowEvent: false, errorMessage: "Looks like you're forgetting to include an attachment.", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like you're forgetting to include an attachment.\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook)." }); } } // IMPORTANT: To ensure your add-in is supported in Outlook, remember to map the event handler name specified in the manifest to its JavaScript counterpart. Office.actions.associate("onMessageSendHandler", onMessageSendHandler);
Важно!
- В классическом Outlook для Windows импорт в настоящее время не поддерживается в файле JavaScript, в котором реализуется обработка активации на основе событий.
- Чтобы убедиться, что надстройка работает должным образом при
OnMessageSend
возникновении события илиOnAppointmentSend
, вызовитеOffice.actions.associate
в файле JavaScript, где реализованы обработчики. Это сопоставляет имя обработчика событий, указанное в манифесте, с его аналогом JavaScript. Если этот вызов не включен в файл JavaScript, а для свойства режима отправки манифеста задана мягкая блокировка или не указано, пользователи будут заблокированы для отправки сообщений или собраний. - Свойство errorMessageMarkdown появилось в наборе требований 1.15. Узнайте больше о поддерживаемых клиентах и платформах.
Настройка текста и функциональности кнопки в диалоговом окне (необязательно)
Примечание.
Поддержка настройки кнопки в диалоговом окне смарт-оповещений появилась в наборе требований 1.14. Узнайте больше о поддерживаемых клиентах и платформах.
Если почтовый элемент не соответствует условиям надстройки Smart Alerts, пользователю показано диалоговое окно, предупреждающее пользователя о том, что перед отправкой элемента могут потребоваться дополнительные действия. Чтобы предоставить пользователю дополнительные рекомендации по выполнению условий надстройки, можно настроить текст кнопки в диалоговом окне и запрограммировать его, чтобы открыть область задач или запустить функцию.
Кнопка, которую можно настроить, зависит от клиента Outlook и версии, в которой выполняется надстройка.
Клиент | Настраиваемая кнопка диалогового окна | Спецификации |
---|---|---|
Windows (классическая версия) Поддерживаемые версии почтовых ящиков 1.14 до версии 2412 (сборка 18324.20000) Mac (предварительная версия) |
Не отправлять | Текст и функции кнопки "Не отправлять" можно настроить. Настраиваемые функции включают открытие области задач или выполнение функции. Кнопка Не отправлять отображается в диалоговом окне независимо от выбранного параметра режима отправки. По умолчанию при выборе не отправлять операция отправки отменяется и диалоговое окно закрывается. ![]() |
Браузер Windows (новая версия) Windows (классическая версия) Версия 2412 (сборка 18324.20000) или более поздняя |
Действие | Текст и функции кнопки "Принять меры " можно настроить. Настраиваемые функции включают открытие области задач или выполнение функции. Кнопка "Действие " отображается только в диалоговом окне Смарт-оповещения, когда вы настраиваете область задач или функцию для запуска из диалогового окна. При наличии кнопки Принять меры кнопка "Не отправлять " используется для отмены отправляемого почтового элемента. Невозможно настроить текст и функциональные возможности кнопки "Не отправлять ". ![]() |
Примечание.
В классической версии Outlook для Windows, если вы настроили текст и функции кнопки "Не отправлять " в надстройке Smart Alerts до версии 2412 (сборка 18324.20000), для реализации кнопки "Принять действия " в последних поддерживаемых версиях не требуется никаких дополнительных действий. Кнопка по умолчанию или настроенная кнопка "Принять меры " будет автоматически отображаться при следующем получении пользователем диалогового окна смарт-оповещений. Хотя изменения в реализации не требуются, рекомендуется уведомлять пользователей об этом обновленном интерфейсе.
Если вы настроили текст кнопки "Не отправлять " только в более ранних поддерживаемых версиях, пользовательский текст не будет отображаться в последних версиях, поддерживающих реализацию "Принять действие ".
Чтобы изменить текст кнопки диалогового окна или назначить ему область задач или функцию, необходимо задать дополнительные параметры в методе event.completed обработчика событий.
Параметр cancelLabel настраивает текст соответствующей кнопки. Пользовательский текст должен содержать не более 20 символов.
Параметр commandId указывает идентификатор области задач или функции, которая запускается при выборе соответствующей кнопки. Значение должно соответствовать идентификатору команды области задач или функции в манифесте надстройки. Разметка зависит от типа манифеста, используемого надстройкой.
-
Манифест только надстройки<: атрибут элемента Control>, представляющего команду области задач или функции.
id
- Унифицированный манифест для Microsoft 365: свойство id области задач или команды функции в массиве controls.
В поддерживаемых клиентах и версиях Outlook при
commandId
указании параметра в диалоговом окне Смарт-оповещения появится кнопка "Выполнить действие ".-
Манифест только надстройки<: атрибут элемента Control>, представляющего команду области задач или функции.
Параметр contextData указывает все данные JSON, которые нужно передать в надстройку при нажатии соответствующей кнопки. Если этот параметр включен, необходимо также задать
commandId
параметр . В противном случае данные JSON игнорируются.Совет
При настройке кнопки в диалоговом окне смарт-оповещений для запуска функции кнопка для реализованной команды надстройки также добавляется на ленту или панель действий клиента Outlook. Используйте параметр ,
contextData
чтобы различать, когда пользователь запускает функцию из диалогового окна Смарт-оповещения.Чтобы получить значение
contextData
параметра, необходимо вызвать Office.context.mailbox.item.getInitializationContextAsync в реализации JavaScript области задач или команды функции.
В этом примере кнопка диалогового окна изменяется для открытия области задач.
Перейдите в папку ./src/launchevent , а затем откройте launchevent.js.
Замените функцию getAttachmentsCallback следующим кодом.
function getAttachmentsCallback(asyncResult) { const event = asyncResult.asyncContext; if (asyncResult.value.length > 0) { for (let i = 0; i < asyncResult.value.length; i++) { if (asyncResult.value[i].isInline == false) { event.completed({ allowEvent: true }); return; } } event.completed({ allowEvent: false, errorMessage: "Looks like the body of your message includes an image or an inline file. Attach a copy to the message before sending.", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like the body of your message includes an image or an inline file. Attach a copy to the message before sending.\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook).", cancelLabel: "Add an attachment", commandId: "msgComposeOpenPaneButton" }); } else { event.completed({ allowEvent: false, errorMessage: "Looks like you're forgetting to include an attachment.", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like you're forgetting to include an attachment.\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook).", cancelLabel: "Add an attachment", commandId: "msgComposeOpenPaneButton" }); } }
Сохраните изменения.
Переопределение параметра режима отправки во время выполнения (необязательно)
Примечание.
Поддержка переопределения режима отправки во время выполнения появилась в наборе требований 1.14. Узнайте больше о поддерживаемых клиентах и платформах.
Могут возникать случаи, когда надстройка должна реализовывать различные параметры режима отправки. Например, вы можете захотеть, чтобы надстройка принудительно применяла параметр блокировки для почтовых элементов, которые не соответствуют политикам защиты информации вашей организации, но применяла параметр пользователя с запросом , чтобы предоставить рекомендацию только в том случае, если пользователь добавляет неправильного получателя.
Чтобы переопределить параметр режима отправки во время выполнения, необходимо задать параметр sendModeOverride в event.completed
методе обработчика событий.
Перейдите в папку ./src/launchevent , а затем откройте launchevent.js.
Замените функцию getAttachmentsCallback следующим кодом.
function getAttachmentsCallback(asyncResult) { const event = asyncResult.asyncContext; if (asyncResult.value.length > 0) { for (let i = 0; i < asyncResult.value.length; i++) { if (asyncResult.value[i].isInline == false) { event.completed({ allowEvent: true }); return; } } event.completed({ allowEvent: false, errorMessage: "Looks like the body of your message includes an image or an inline file. Would you like to attach a copy of it to the message?", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like the body of your message includes an image or an inline file. Would you like to attach a copy of it to the message?\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook).", cancelLabel: "Attach a copy", commandId: "msgComposeOpenPaneButton", sendModeOverride: Office.MailboxEnums.SendModeOverride.PromptUser }); } else { event.completed({ allowEvent: false, errorMessage: "Looks like you're forgetting to include an attachment.", // TIP: In addition to the formatted message, it's recommended to also set a // plain text message in the errorMessage property for compatibility on // older versions of Outlook clients. errorMessageMarkdown: "Looks like you're forgetting to include an attachment.\n\n**Tip**: For guidance on how to attach a file, see [Attach files in Outlook](https://www.contoso.com/help/attach-files-in-outlook).", cancelLabel: "Add an attachment", commandId: "msgComposeOpenPaneButton" }); } }
Сохраните изменения.
Настройка области задач (необязательно)
Если в этом пошаговом руководстве реализованы необязательные шаги по настройке кнопки диалогового окна или переопределения режима отправки, необходимо также настроить область задач.
Примечание.
В Outlook в Интернете, новом Outlook для Windows, поддерживаемых версиях классического Outlook в Windows до версии 2412 (сборка 18324.20000) и Outlook для Mac, вы можете настроить текст кнопки "Не отправлять" без реализации команды области задач или функции. Хотя область задач необходима в этом примере, это не обязательно, чтобы иметь возможность настраивать текст кнопки или переопределять параметр режима отправки в этих клиентах.
В классической версии Outlook для Windows, начиная с версии 2412 (сборка 18324.20000), необходимо реализовать команду области задач или функции, чтобы настроить кнопку "Действие ". Это связано с тем, что кнопка "Принять меры " отображается в диалоговом окне смарт-оповещений только при реализации в надстройке команды области задач или функции.
Перейдите в папку ./src/taskpane , а затем откройте taskpane.html.
Выберите весь <основной> узел (включая открытые и закрытые теги) и замените его следующим кодом.
<body class="ms-welcome ms-Fabric"> <header class="ms-welcome__header ms-bgColor-neutralLighter"> <img width="90" height="90" src="../../assets/logo-filled.png" alt="Contoso" title="Contoso" /> <h1 class="ms-font-su">Try out the Smart Alerts sample</h1> </header> <section id="sideload-msg" class="ms-welcome__main"> <h2 class="ms-font-xl">Please <a href="https://learn.microsoft.com/office/dev/add-ins/testing/test-debug-office-add-ins#sideload-an-office-add-in-for-testing">sideload</a> your add-in to see app body.</h2> </section> <main id="app-body" class="ms-welcome__main" style="display: none;"> <p> This sample implements a Smart Alerts add-in that activates when you forget to attach a document or picture that you mention in your message. To learn more, see the <a href="https://learn.microsoft.com/office/dev/add-ins/outlook/smart-alerts-onmessagesend-walkthrough">Smart Alerts walkthrough</a>. </p> <h3 class="ms-font-l">Add an attachment</h3> <p>Add the URL of a file to add it as an attachment.</p> <div class="ms-TextField"> <label class="ms-Label ms-font-l">URL of file:</label> <input id="attachment-url" class="ms-TextField-field" type="text" value="https://localhost:3000/assets/icon-128.png" placeholder=""> </div> <br/> <button class="ms-Button ms-Button--primary"> <span id="add-attachment" class="ms-Button-label">Add as attachment</span> </button> <br/> <h3 class="ms-font-l">Override the send mode option at runtime</h3> <p>Add an inline image to test overriding the send mode option at runtime.</p> <button class="ms-Button ms-Button--primary"> <span id="add-inline-image" class="ms-Button-label">Add an inline image</span> </button> </main> </body>
Сохраните изменения.
В той же папке ./src/taskpane откройте taskpane.js.
Замените его содержимое следующим кодом.
/* * Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. * See LICENSE in the project root for license information. */ Office.onReady((info) => { if (info.host === Office.HostType.Outlook) { document.getElementById("sideload-msg").style.display = "none"; document.getElementById("app-body").style.display = "flex"; document.getElementById("add-attachment").onclick = addAttachment; document.getElementById("add-inline-image").onclick = addInlineImage; } }); // Adds the specified URL as an attachment to the message. export async function addAttachment() { const attachmentUrl = document.querySelector("#attachment-url").value; Office.context.mailbox.item.addFileAttachmentAsync(attachmentUrl, getFileName(attachmentUrl), (asyncResult) => { console.log("Added attachment."); }); } // Gets the file name from a URL. function getFileName(url) { const lastIndex = url.lastIndexOf("/"); if (lastIndex >= 0) { return url.substring(lastIndex + 1); } return url; } // Adds an inline image to the body of the message. export async function addInlineImage() { const mailItem = Office.context.mailbox.item; const base64String = "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg=="; // Get the current body of the message. mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => { if (bodyResult.status === Office.AsyncResultStatus.Failed) { console.log(bodyResult.error.message); return; } // Insert the Base64-encoded image to the beginning of the body. const options = { isInline: true, asyncContext: bodyResult.value }; mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => { if (attachResult.status === Office.AsyncResultStatus.Failed) { console.log(attachResult.error.message); return; } let body = attachResult.asyncContext; body += '<img src="cid:sample.png" />'; mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => { if (setResult.status === Office.AsyncResultStatus.Failed) { console.log(setResult.error.message); return; } console.log("Inline image added to the body."); }); }); }); }
Сохраните изменения.
Программная отправка элемента из области задач (необязательно)
Примечание.
Метод sendAsync
появился в наборе требований 1.15. Узнайте больше о поддерживаемых клиентах и платформах.
Чтобы еще больше упростить взаимодействие пользователя с рекомендациями по изменениям в отправленных им почтовых элементах, вызовите метод sendAsync в коде команды области задач или функции.
В taskpane.jsзамените функцию
addAttachment
следующим кодом.// Adds the specified URL as an attachment to the message. // Then, programmatically sends the message. export async function addAttachment() { const attachmentUrl = document.querySelector("#attachment-url").value; Office.context.mailbox.item.addFileAttachmentAsync(attachmentUrl, getFileName(attachmentUrl), (asyncResult) => { console.log("Added attachment"); // Programmatically send the item. Office.context.mailbox.item.sendAsync((sendResult) => { if (sendResult.status === Office.AsyncResultStatus.Failed) { console.log(`Unable to send the message: ${sendResult.error.message}`); return; } // Don't run additional operations here. Process them before the sendAsync call instead. }); // Don't run additional operations after the sendAsync call. Process them before the sendAsync call instead. }); }
Совет
- Любой код, реализованный для выполнения, когда
asyncResult.status
являетсяOffice.AsyncResultStatus.Success
или послеsendAsync
метода, не гарантируется для обработки. Это связано с тем, что элемент, возможно, уже отправлен, и надстройка завершила обработку. Мы рекомендуем обработать другие операции перед вызовомsendAsync
. - Реализация
sendAsync
зависит от области задач и реализации команд функции. Инструкции см. в справочной документации по sendAsync .
- Любой код, реализованный для выполнения, когда
Сохраните изменения.
В taskpane.htmlобновите метку кнопки
add-attachment
.<span id="add-attachment" class="ms-Button-label">Add and send</span>
Совет
Рекомендуется указывать пользователю, когда надстройка программным способом отправляет элемент электронной почты, который он создает. В зависимости от реализации можно указать это в метке кнопки или добавить заметку в область задач.
Сохраните изменения.
Обновление HTML-файла команд
В папке ./src/commands откройте commands.html.
Непосредственно перед закрывающим тегом головки (
</head>
) добавьте запись скрипта для кода JavaScript для обработки событий.<script type="text/javascript" src="../launchevent/launchevent.js"></script>
Важно!
Функции переопределения кнопки диалогового окна и режима отправки в настоящее время находятся в предварительной версии в Outlook на Mac. Если вы тестируете эти функции в проекте надстройки, необходимо включить ссылку на предварительную версию API JavaScript для Office в файлcommands.html .
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/beta/hosted/office.js"></script>
<script type="text/javascript" src="../launchevent/launchevent.js"></script>
- Сохраните изменения.
Обновление настроек конфигурации webpack
Откройте файлwebpack.config.js , который находится в корневом каталоге проекта, и выполните следующие действия.
plugins
Найдите массив в объектеconfig
и добавьте этот новый объект в начало массива.new CopyWebpackPlugin({ patterns: [ { from: "./src/launchevent/launchevent.js", to: "launchevent.js", }, ], }),
Сохраните изменения.
Проверка
Выполните следующие команды в корневом каталоге проекта. При запуске
npm start
запустится локальный веб-сервер (если он еще не запущен), и надстройка будет загружена неопубликованно.npm run build
npm start
Примечание.
Если надстройка не была автоматически загружена неопубликованным приложением, следуйте инструкциям в разделе Загрузка неопубликованных надстроек Outlook для тестирования, чтобы вручную загрузить надстройку неопубликованного приложения в Outlook.
В предпочитаемом клиенте Outlook создайте новое сообщение и задайте тему. В тексте добавьте текст. Например, "Вот изображение предлагаемого логотипа".
Отправьте сообщение. Появится диалоговое окно с запросом на добавление вложения. Выберите Не отправлять, выполнять действия или Добавить вложение. Доступные параметры зависят от клиента Outlook и от того, реализован ли необязательный шаг для настройки кнопки диалогового окна.
Кнопка "Не отправлять " по умолчанию.
Кнопка "Действие" по умолчанию.
Настроенная кнопка "Добавить вложение ". Применимо к Outlook в Интернете, новому Outlook в Windows и классическому Outlook в Windows (начиная с версии 2412 (сборка 18324.20000)).
Настроенная кнопка "Добавить вложение ". Применяется к классической версии Outlook в Windows до версии 2412 (сборка 18324.20000).
Примечание.
В поддерживаемых версиях классического Outlook в Windows до версии 2410 (сборка 18031.15000) если назначить область задач кнопке Не отправлять , при закрытии диалогового окна также откроется указанная область задач.
Добавьте вложение в сообщение. Если вы реализовали необязательный шаг для настройки кнопки диалогового окна, используйте область задач для добавления вложения.
Отправьте сообщение. Если вы реализовали необязательный шаг для программной отправки сообщения из области задач, сообщение будет отправлено при нажатии кнопки Добавить и отправить. На этот раз оповещение не должно быть.
Если вы хотите остановить локальный веб-сервер и удалить надстройку, следуйте применимым инструкциям:
Чтобы остановить сервер, выполните следующую команду. Если вы использовали
npm start
, следующая команда также должна удалить надстройку.npm stop
Если вы вручную загрузили неопубликованную надстройку, см. статью Удаление неопубликоченной надстройки.
Попробуйте переопределить режим отправки во время выполнения (необязательно)
Если вы реализовали необязательный шаг для переопределения параметра режима отправки во время выполнения, выполните следующие действия, чтобы опробовать его.
Запустите
npm start
в корневом каталоге проекта. При этом запускается локальный веб-сервер (если он еще не запущен) и загружается неопубликообразная надстройка.Примечание.
Если надстройка не была автоматически загружена неопубликованным приложением, следуйте инструкциям в разделе Загрузка неопубликованных надстроек Outlook для тестирования, чтобы вручную загрузить надстройку неопубликованного приложения в Outlook.
В предпочитаемом клиенте Outlook создайте новое сообщение и задайте тему. В тексте добавьте текст. Например, "Вот изображение предлагаемого логотипа".
На ленте выберите Contoso Add-in>Show Taskpane (Показать область задач).
В области задач выберите Добавить встроенное изображение. Изображение добавляется в текст сообщения.
Отправьте сообщение. Появится диалоговое окно с рекомендацией прикрепить копию изображения к сообщению.
Выберите Отправить в любом случае , чтобы отправить сообщение как есть, или выберите Вложить копию , чтобы включить копию перед отправкой сообщения.
Применимо к Outlook в Интернете, новому Outlook в Windows и классическому Outlook в Windows (начиная с версии 2412 (сборка 18324.20000)).
Применяется к классической версии Outlook в Windows до версии 2412 (сборка 18324.20000).
Важно!
Если надстройка Smart Alerts, реализующая функцию переопределения, не может завершить обработку события из-за ошибки или недоступна при возникновении события, она использует параметр режима отправки, указанный в манифесте.
См. также
- Обработка событий OnMessageSend и OnAppointmentSend в надстройке Outlook с помощью смарт-оповещений
- Настройка надстройки Outlook для активации на основе событий
- Манифесты надстроек Office
- Устранение неполадок надстроек на основе событий и отчетов о спаме
- Отладка надстроек на основе событий и отчетов о спаме
- Параметры описания AppSource для надстройки Outlook на основе событий
- Пример кода надстроек Office. Проверьте цветовые категории сообщения или встречи перед отправкой с помощью смарт-оповещений
- Пример кода надстроек Office: проверка метки конфиденциальности сообщения
Office Add-ins