/*
* 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's LaunchEvent element (with the add-in only manifest)
// or the "autoRunEvents.events.actionId" property (with the unified manifest for Microsoft 365)
// to its JavaScript counterpart.
Office.actions.associate("onNewMessageComposeHandler", onNewMessageComposeHandler);
Office.actions.associate("onMessageFromChangedHandler", onMessageFromChangedHandler);
重要
Windows:目前,在 JavaScript 文件中,你对基于事件的激活实现处理不支持导入。
提示
在经典 Outlook on Windows 中运行的基于事件的加载项不会运行 和 Office.initialize 函数中包含的Office.onReady()代码。 建议改为将加载项启动逻辑(例如检查用户的 Outlook 版本)添加到事件处理程序。
在 Outlook 网页版 中,在 Windows (新的和经典) ,在 Mac 上,支持电子邮件帐户别名。 在“发件人”或“组织者”字段中选择当前帐户的别名时,OnMessageFromChanged将发生 或 OnAppointmentFromChanged 事件,而无需重新加载帐户的加载项。Email移动设备上的 Outlook 不支持帐户别名。