Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применение правильной подписи к сообщениям при использовании нескольких учетных записей Exchange теперь упрощается благодаря добавлению OnMessageFromChanged событий и OnAppointmentFromChanged в функцию активации на основе событий . Событие OnMessageFromChanged возникает при изменении учетной записи в поле From создаваемого сообщения, а OnAppointmentFromChanged событие возникает при изменении организатора создаваемого собрания. Эти события расширяют возможности надстроек сигнатур и позволяют им:
- Предоставьте пользователям удобство применения пользовательских подписей для каждой из своих учетных записей.
- Включение делегатов почтовых ящиков для более точного и эффективного управления исходящими сообщениями и приглашениями на собрания из нескольких почтовых ящиков.
- Убедитесь, что сообщения и встречи пользователей соответствуют политикам организации в области коммуникации и маркетинга.
В следующих разделах показано, как разработать надстройку на основе событий, которая обрабатывает OnMessageFromChanged событие для автоматического обновления подписи сообщения при изменении учетной записи почты в поле From .
Примечание.
События OnMessageFromChanged и OnAppointmentFromChanged были введены в наборе требований 1.13. Сведения о поддержке клиентов для этих событий см. в разделе Поддерживаемые клиенты и платформы.
Поддерживаемые клиенты и платформы
В следующих таблицах перечислены сочетания клиента и сервера, которые поддерживают OnMessageFromChanged события и OnAppointmentFromChanged . Выберите вкладку для соответствующего события.
| Клиент | Exchange Online. | Exchange Server Subscription Edition (SE) | Локальная версия Exchange 2019 (накопительное обновление 12 или более поздняя версия) | Локальная среда Exchange 2016 (накопительное обновление 22 или более поздняя версия) |
|---|---|---|---|---|
|
Веб-браузер (современный пользовательский интерфейс) новый Outlook в Windows |
Поддерживается | Неприменимо | Неприменимо | Неприменимо |
|
Windows (классическая версия) Версия 2304 (сборка 16327.20248) или более поздняя |
Поддерживается | Поддерживается | Поддерживается | Поддерживается |
|
Mac Версия 16.77 (23081600) или более поздняя |
Поддерживается | Неприменимо | Неприменимо | Неприменимо |
|
iOS Версия 4.2502.0 |
Поддерживается | Неприменимо | Неприменимо | Неприменимо |
|
Android Версия 4.2502.0 |
Поддерживается | Неприменимо | Неприменимо | Неприменимо |
Предварительные условия
Чтобы протестировать пошаговое руководство, необходимо иметь по крайней мере две учетные записи Exchange.
Настройка среды
Выполните краткое руководство по Outlook, в котором создается проект надстройки с генератором Yeoman для надстроек Office.
Настройка манифеста
Примечание.
В OnMessageFromChanged настоящее время это событие недоступно в едином манифесте Microsoft 365 в Outlook в Интернете и новом Outlook в Windows. Для обработки этих событий реализуйте манифест только надстройки. Сведения о типах манифестов см. в разделе Манифест надстроек Office.
Примечание.
Надстройки, использующие унифицированный манифест Для Microsoft 365, не поддерживаются непосредственно в Outlook на Mac и на мобильных устройствах. Чтобы запустить надстройку этого типа на Mac и на мобильных платформах, ее необходимо сначала опубликовать в Microsoft Marketplace, а затем развернуть в Центре Microsoft 365 Admin. Дополнительные сведения см. в разделе "Поддержка клиентов и платформ" статьи Надстройки Office с манифестом унифицированного приложения для Microsoft 365.
Откройте файл manifest.json .
Перейдите к массиву
"authorization.permissions.resourceSpecific". В объекте массива замените значение"name"свойства на"MailboxItem.ReadWrite.User". Это необходимо надстройке, чтобы иметь возможность обновлять сигнатуру сообщения.... "authorization": { "permissions": { "resourceSpecific": [ { "name": "MailboxItem.ReadWrite.User", "type": "Delegated" } ] } }, ...Добавьте следующий объект в массив
"extensions.runtimes". Обратите внимание на следующие особенности этой разметки.Параметр
"minVersion"набора обязательных почтовых ящиков настроен как , так как"1.13"это самая низкая версия набора требований, поддерживающаяOnMessageFromChangedсобытие. Дополнительные сведения см. в таблице "Поддерживаемые события" статьи Активация надстроек с помощью событий.Для
"id"среды выполнения задано описательное имя ,"autorun_runtime".Свойство
"code"имеет дочернее"page"свойство, для которого задано значение HTML-файла, а дочернее"script"свойство — файл JavaScript. Вы создадите или измените эти файлы на последующих шагах. Office использует одно из этих значений в зависимости от платформы.- Классический Outlook в Windows выполняет обработчик событий в среде выполнения, доступной только для JavaScript, которая загружает файл JavaScript напрямую.
- Outlook в Интернете и на Mac, а также новый Outlook в Windows выполняют обработчик в среде выполнения браузера, которая загружает HTML-файл. HTML-файл содержит
<script>тег, который затем загружает файл JavaScript.
Дополнительные сведения см. в разделе Среды выполнения в надстройках Office.
Для свойства
"lifetime"задано значение"short". Это означает, что среда выполнения запускается при возникновении события и завершает работу по завершении работы обработчика.Необходимо
"actions"запустить обработчики дляOnMessageFromChangedсобытий иOnNewMessageCompose. Обработчики будут созданы на следующем шаге.
{ "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.13" } ] }, "id": "autorun_runtime", "type": "general", "code": { "page": "https://localhost:3000/commands.html", "script": "https://localhost:3000/launchevent.js" }, "lifetime": "short", "actions": [ { "id": "onMessageFromChangedHandler", "type": "executeFunction", "displayName": "onMessageFromChangedHandler" }, { "id": "onNewMessageComposeHandler", "type": "executeFunction", "displayName": "onNewMessageComposeHandler" } ] }"autoRunEvents"Добавьте массив в качестве свойства объекта в массиве"extensions". Массив"autoRunEvents"содержит объект со следующими ключевыми свойствами.- Свойство
"events"назначает обработчики событиямOnMessageFromChangedиOnNewMessageCompose. Сведения об именах событий, используемых в унифицированном манифесте, см. в таблице "Поддерживаемые события" статьи Активация надстроек с помощью событий. - Имя функции, указанное в,
"actionId"должно соответствовать свойству"id"соответствующего объекта в массиве, настроенном"actions"ранее.
"autoRunEvents": [ { "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.13" } ], "scopes": [ "mail" ] }, "events": [ { "type": "messageFromChanged", "actionId": "onMessageFromChangedHandler" }, { "type": "newMessageComposeCreated", "actionId": "onNewMessageComposeHandler" } ] } ]- Свойство
Совет
- Сведения о средах выполнения в надстройках см. в статье Среды выполнения в надстройках Office.
- Дополнительные сведения о манифестах надстроек Outlook см. в статье Манифесты надстроек Office.
Реализация обработчиков событий
Обработчики событий должны быть настроены OnNewMessageCompose для событий и OnMessageFromChanged . Функция onNewMessageComposeHandler добавляет подпись в только что созданное сообщение, если оно по умолчанию еще не настроено в текущей учетной записи. При изменении onMessageFromChangedHandler учетной записи в поле From функция обновляет подпись на основе этой только что выбранной учетной записи.
В том же проекте быстрого запуска перейдите в каталог ./src , а затем создайте папку с именем launchevent.
В папке ./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. */ // The OnNewMessageCompose event handler that adds a signature to a new message. function onNewMessageComposeHandler(event) { const platform = Office.context.platform; const signature = "<i>This is a sample signature.</i>"; // On supported platforms, check if a default Outlook signature is already configured. if (platform !== Office.PlatformType.Android && platform !== Office.PlatformType.iOS) { Office.context.mailbox.item.isClientSignatureEnabledAsync({ asyncContext: { event: event, signature: signature } }, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; } // Add a signature if there's no default Outlook signature configured. const signatureEnabled = result.value; if (signatureEnabled === false) { const event = result.asyncContext.event; const signature = result.asyncContext.signature; setSignature(signature, event); } }); } else { setSignature(signature, event); } } // The OnMessageFromChanged event handler that updates the signature when the email address in the From field is changed. function onMessageFromChangedHandler(event) { const item = Office.context.mailbox.item; const signatureIcon = "iVBORw0KGgoAAAANSUhEUgAAACcAAAAnCAMAAAC7faEHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAzUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMFRskAAAAQdFJOUwAQIDBAUGBwgI+fr7/P3+8jGoKKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABT0lEQVQ4T7XT2ZalIAwF0DAJhMH+/6+tJOQqot6X6joPiouNBo3w9/Hd6+hrYnUt6vhLcjEAJevVW0zJxABSlcunhERpjY+UKoNN5+ZgDGu2onNz0OngjP2FM1VdyBW1LtvGeYrBLs7U5I1PTXZt+zifcS3Icw2GcS3vxRY3Vn/iqx31hUyTnV515kdTfbaNhZLI30AceqDiIo4tyKEmJpKdP5M4um+nUwfDWxAXdzqMNKQ14jLdL5ntXzxcRF440mhS6yu882Kxa30RZcUIjTCJg7lscsR4VsMjfX9Q0Vuv/Wd3YosD1J4LuSRtaL7bzXGN1wx2cytUdncDuhA3fu6HPTiCvpQUIjZ3sCcHVbvLtbNTHlysx2w9/s27m9gEb+7CTri6hR1wcTf2gVf3wBRe3CMbcHYvTODkXhnD0+178K/pZ9+n/C1ru/2HAPwAo7YM1X4+tLMAAAAASUVORK5CYII="; // Get the currently selected From account. item.from.getAsync({ asyncContext: event }, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; } // Create a signature based on the currently selected From account. const name = result.value.displayName; const options = { asyncContext: { event: result.asyncContext, name: name }, isInline: true }; item.addFileAttachmentFromBase64Async(signatureIcon, "signatureIcon.png", options, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; } // Add the created signature to the mail item. const signature = "<img src='cid:signatureIcon.png'>" + result.asyncContext.name; const event = result.asyncContext.event; setSignature(signature, event); }); }); } // Sets the custom signature and adds it to the mail item. function setSignature(signature, event) { Office.context.mailbox.item.body.setSignatureAsync( signature, { asyncContext: event, coercionType: Office.CoercionType.Html }, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; } console.log("Successfully added signature."); const event = result.asyncContext; event.completed(); } ); } // 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("onNewMessageComposeHandler", onNewMessageComposeHandler); Office.actions.associate("onMessageFromChangedHandler", onMessageFromChangedHandler);
Важно!
- В классической версии Outlook в Windows импорт не поддерживается в файле JavaScript, в котором реализуется обработка активации на основе событий.
- В классическом Outlook в Windows, когда функция JavaScript, указанная в манифесте для обработки события, выполняется код в
Office.onReady()иOffice.initializeне выполняется. Вместо этого рекомендуется добавить в обработчики событий любую логику запуска, необходимую обработчикам событий, например проверку версии Outlook пользователя. - Чтобы убедиться, что надстройка работает должным образом при возникновении события, вызовите
Office.actions.associateв файле JavaScript, где реализованы обработчики. Это сопоставляет имя обработчика событий, указанное в манифесте, с его аналогом JavaScript. Расположение имени обработчика в манифесте зависит от типа манифеста, используемого надстройкой.-
Унифицированный манифест для Microsoft 365: значение, указанное
"actionId"в свойстве применимого"autoRunEvents.events"объекта. - Манифест только надстройки: имя функции, указанное в применимом элементе LaunchEvent .
-
Унифицированный манифест для Microsoft 365: значение, указанное
Обновление HTML-файла команд
В папке ./src/commands откройте commands.html.
Добавьте следующий код под существующим тегом скрипта .
<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 buildnpm startПримечание.
- При первом использовании генератора Yeoman для разработки надстройки Office браузер по умолчанию открывает окно, в котором вам будет предложено войти в учетную запись Microsoft 365. Если окно входа не отображается и возникает ошибка загрузки неопубликованного приложения или времени ожидания входа, выполните команду
atk auth login m365перед повторным запускомnpm start.
Если надстройка не была автоматически загружена неопубликованным приложением, следуйте инструкциям в разделе Загрузка неопубликованных надстроек Outlook для тестирования, чтобы вручную загрузить надстройку неопубликованного приложения в Outlook.
- При первом использовании генератора Yeoman для разработки надстройки Office браузер по умолчанию открывает окно, в котором вам будет предложено войти в учетную запись Microsoft 365. Если окно входа не отображается и возникает ошибка загрузки неопубликованного приложения или времени ожидания входа, выполните команду
В предпочитаемом клиенте Outlook создайте новое сообщение. Если у вас не настроена подпись Outlook по умолчанию, надстройка добавляет ее в созданное сообщение. В Outlook на мобильных устройствах надстройка добавляет образец подписи, даже если у вас настроена подпись по умолчанию.
Включите поле От , если применимо. Инструкции по его включению см. в разделе "Почему отсутствует кнопка "От?" статьи Изменение учетной записи, используемой для отправки сообщений электронной почты.
Выберите От, а затем выберите другую учетную запись Exchange. Кроме того, можно вручную ввести адрес электронной почты Exchange, выбрав Из>другого Email адрес. В сообщение добавляется обновленная сигнатура, заменяющая предыдущую.
Если вы хотите остановить локальный веб-сервер и удалить надстройку, следуйте применимым инструкциям:
Чтобы остановить сервер, выполните следующую команду. Если вы использовали
npm start, следующая команда также должна удалить надстройку.npm stopЕсли вы вручную загрузили неопубликованную надстройку, см. статью Удаление неопубликоченной надстройки.
Устранение неполадок с надстройкой
Инструкции по устранению неполадок надстройки активации на основе событий см. в статье Устранение неполадок надстроек на основе событий и отчетов о спаме.
Развертывание для пользователей
Как и другие надстройки на основе событий, надстройки, использующие OnMessageFromChanged события и OnAppointmentFromChanged , должны развертываться администратором организации. Инструкции по развертыванию надстройки с помощью Центр администрирования Microsoft 365 см. в разделе "Развертывание надстройки" статьи Активация надстроек с помощью событий.
Поведение и ограничения событий
OnMessageFromChanged Так как события и OnAppointmentFromChanged поддерживаются с помощью функции активации на основе событий, к надстройкам, которые активируются в результате этого события, применяются те же действия и ограничения. Подробное описание см. в разделе Поведение активации на основе событий и ограничения.
Помимо этих характеристик, следующие аспекты также применяются при активации надстройки для этих событий.
- Событие
OnMessageFromChangedподдерживается только в режиме создания сообщений, аOnAppointmentFromChangedсобытие поддерживается только в режиме создания встреч. - В Outlook в Интернете в Windows (новой и классической версии) и на мобильных устройствах поддерживается только
OnMessageFromChangedсобытие. - События
OnMessageFromChangedиOnAppointmentFromChangedподдерживают только учетные записи Exchange. Если пользователь переключается на учетную запись, не относясь к Exchange, в поле От или организатор, клиент Outlook автоматически очищает подпись, заданную ранее выбранной учетной записью. - В зависимости от клиента Outlook в создаваемых сообщениях учетная запись Exchange выбирается из раскрывающегося списка Из поля или вводится в поле вручную. Outlook на мобильных устройствах поддерживает только выбор учетной записи в раскрывающемся списке Из поля. При составлении встреч учетная запись Exchange выбирается в раскрывающемся списке поле организатора.
- В Outlook в Интернете, в Windows (новой и классической версии), а также в Mac
OnMessageFromChangedсобытия иOnAppointmentFromChangedподдерживают сценарии делегирования и общего почтового ящика. Эти сценарии не поддерживаются в Outlook на мобильных устройствах. - Событие
OnAppointmentFromChangedне поддерживается в календарях групп Microsoft 365. Если пользователь переключается со своей учетной записи Exchange на учетную запись календаря группы Microsoft 365 в поле организатора, клиент Outlook автоматически очищает подпись, заданную учетной записью Exchange. - При переключении на другую учетную запись Exchange в поле From или organizer надстройки для ранее выбранной учетной записи прекращаются, а надстройки, связанные с только что выбранной учетной записью, загружаются перед запуском
OnMessageFromChangedсобытия илиOnAppointmentFromChanged. - В Outlook в Интернете в Windows (новой и классической версии) и в Mac поддерживаются псевдонимы учетных записей электронной почты. Если в поле From или organizer выбран псевдоним для текущей учетной записи,
OnMessageFromChangedсобытие илиOnAppointmentFromChangedпроисходит без перезагрузки надстроек учетной записи. Email псевдонимы учетных записей не поддерживаются в Outlook на мобильных устройствах. - Если раскрывающийся список поле "От " или "организатор" открывается по ошибке или повторно выбрана та же учетная запись, которая отображается в поле "От " или "организатор",
OnMessageFromChangedпроисходит событие илиOnAppointmentFromChanged, но надстройки учетной записи не прекращаются и не перезагружаются.