最小化 Outlook Web 加载项中的撰写 window 和 运行 函数
Minimize compose window and run function in an Outlook web add-in
我目前正在开发一个处理、修改然后发送电子邮件的 Web 插件。
我已附加到 ItemSend 事件:<Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateBody" />
。这将验证正文,然后将其发送。
我遇到的问题是处理电子邮件最多可能需要 40 秒,我不希望用户在这段时间内被阻止。
我想知道有没有一种方法可以最小化 compose window 并且仍然 运行 处理函数和完成后最小化 window 的关闭?
我知道该加载项仅适用于当前项目,因此当我发送电子邮件时,我仍然可以访问其他页面,但是一旦电子邮件尝试自行发送并关闭撰写 window 什么都没有发生了。
这是发送邮件的函数:
async function sendInBackGround(htmlArr, message = "") {
const subject = await getEmailSubject();
const messageDiv = "<div>" + message + "</div>";
for (const htmlArrObject of htmlArr) {
debugger;
var request = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Header><t:RequestServerVersion Version="Exchange2010" /></soap:Header>' +
' <soap:Body>' +
' <m:CreateItem MessageDisposition="SendOnly">' +
' <m:Items>' +
' <t:Message>' +
' <t:Subject>' + subject.value + '</t:Subject>' +
' <t:Body BodyType="HTML"><![CDATA[' + htmlArrObject.html + messageDiv + ']]></t:Body>' +
' <t:ToRecipients>' +
' <t:Mailbox><t:EmailAddress>' + htmlArrObject.recipient + '</t:EmailAddress></t:Mailbox>' +
' </t:ToRecipients>' +
' </t:Message>' +
' </m:Items>' +
' </m:CreateItem>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request, (asyncResult) => {
console.log(request);
if (asyncResult.status === "failed") {
console.log("Action failed with error: " + asyncResult.error.message);
}
else {
console.log("Message sent!");
mailboxItem.close();
}
});
}
}
当我发送项目并等待撰写 window 以完成流程时,asyncResult 具有已定义的状态和值。但是当我在进程 运行ning 期间更改 windows 时,例如我继续另一个撰写 window 并开始写另一封电子邮件,asyncResult 对象的状态为成功但值返回未定义。
有人可以帮忙吗?
I was wondering is there a way to minimize the compose window and still run the processing function and the close that minimized window once its done?
不行,web-basedadd-ins没办法。您可以 post 您的功能 request/suggestion 到 Tech Community Page。不要忘记选择合适的标签。当团队完成规划过程时,会考虑 Tech Community
上的功能请求。
附带说明一下,现在您可以使用基于 COM 的 add-ins 实现所需的功能。例如,您可以考虑开发 VSTO add-in,有关详细信息,请参阅 Walkthrough: Create your first VSTO Add-in for Outlook。
我目前正在开发一个处理、修改然后发送电子邮件的 Web 插件。
我已附加到 ItemSend 事件:<Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateBody" />
。这将验证正文,然后将其发送。
我遇到的问题是处理电子邮件最多可能需要 40 秒,我不希望用户在这段时间内被阻止。
我想知道有没有一种方法可以最小化 compose window 并且仍然 运行 处理函数和完成后最小化 window 的关闭?
我知道该加载项仅适用于当前项目,因此当我发送电子邮件时,我仍然可以访问其他页面,但是一旦电子邮件尝试自行发送并关闭撰写 window 什么都没有发生了。
这是发送邮件的函数:
async function sendInBackGround(htmlArr, message = "") {
const subject = await getEmailSubject();
const messageDiv = "<div>" + message + "</div>";
for (const htmlArrObject of htmlArr) {
debugger;
var request = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Header><t:RequestServerVersion Version="Exchange2010" /></soap:Header>' +
' <soap:Body>' +
' <m:CreateItem MessageDisposition="SendOnly">' +
' <m:Items>' +
' <t:Message>' +
' <t:Subject>' + subject.value + '</t:Subject>' +
' <t:Body BodyType="HTML"><![CDATA[' + htmlArrObject.html + messageDiv + ']]></t:Body>' +
' <t:ToRecipients>' +
' <t:Mailbox><t:EmailAddress>' + htmlArrObject.recipient + '</t:EmailAddress></t:Mailbox>' +
' </t:ToRecipients>' +
' </t:Message>' +
' </m:Items>' +
' </m:CreateItem>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request, (asyncResult) => {
console.log(request);
if (asyncResult.status === "failed") {
console.log("Action failed with error: " + asyncResult.error.message);
}
else {
console.log("Message sent!");
mailboxItem.close();
}
});
}
}
当我发送项目并等待撰写 window 以完成流程时,asyncResult 具有已定义的状态和值。但是当我在进程 运行ning 期间更改 windows 时,例如我继续另一个撰写 window 并开始写另一封电子邮件,asyncResult 对象的状态为成功但值返回未定义。
有人可以帮忙吗?
I was wondering is there a way to minimize the compose window and still run the processing function and the close that minimized window once its done?
不行,web-basedadd-ins没办法。您可以 post 您的功能 request/suggestion 到 Tech Community Page。不要忘记选择合适的标签。当团队完成规划过程时,会考虑 Tech Community
上的功能请求。
附带说明一下,现在您可以使用基于 COM 的 add-ins 实现所需的功能。例如,您可以考虑开发 VSTO add-in,有关详细信息,请参阅 Walkthrough: Create your first VSTO Add-in for Outlook。