Outlook AddIn GetAsync成功,但未返回任何结果

时间:2019-06-12 13:38:19

标签: javascript outlook outlook-addin office-js javascript-api-for-office

我有一个使用Office Javascript API开发的Outlook加载项。  它查看正在撰写的新电子邮件,并根据要发送给谁的电子邮件进行处理:https://docs.microsoft.com/en-us/office/dev/add-ins/reference/objectmodel/requirement-set-1.3/office.context.mailbox.item

  • 当您从建议的电子邮件列表中“选择”电子邮件时,代码会正确返回TO电子邮件...屏幕截图显示在该线程底部

  • 要调试Javascript,我使用C:\ Windows \ SysWOW64 \ F12 \ IEChooser.exe

  • 到上周为止,一切都很好。 Windows更新是否可能破坏了功能?

  • 我是唯一有权访问该代码的人。几个月没有被修改。
  • 运行调试器时,getAsync正确返回“ TO”值。我需要将响应写入全局变量,以证明在调试时值是“未定义的”。

var resultObjects;
var resultObjects2;
var strMessages = '';
var strTo = '';

var mailbox;
var mailitem;

(function () {
    "use strict";

    // The Office initialize function must be run each time a new page is loaded.
    Office.initialize = function (reason) {
        $(document).ready(function () {

            mailbox = Office.context.mailbox;
            mailitem = mailbox.item;

            mailitem.to.getAsync(function (result) {
                if (result.status === 'failed') {
                    strMessages = 'FAILED';
                } else {
                    strMessages = 'SUCCESS';
                    strTo = result.value[0];
                    resultObjects = result;
                    resultObjects2 = result.value;
                }
            });

            loadApp();
        });
    };
})();

这是加载应用程序且调试器未运行时的变量值

enter image description here


编辑


如果您“选择”收件人电子邮件,使其以粗体显示,则代码可以正常工作。如果您在没有选择建议的电子邮件的情况下保留了“键入文本”字段,则它将不起作用。对于Outlook Web Application(@ https://outlook.office.com)和桌面Outlook应用程序,都是相同的行为。

不起作用 enter image description here

可以工作 enter image description here

1 个答案:

答案 0 :(得分:1)

Office.context.mailbox.item.to.getAsync API将仅返回已解析的收件人。如果TO电子邮件地址未解析(如标题为“不起作用”的第一个屏幕截图中所示),则API将在解析后(在台式机和OWA中)都不会返回该电子邮件地址。

查询to.getAsync之后,可以使用RecipientsChanged Event获取新解析的收件人。新解决收件人时将触发此事件。