最小化 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