Outlook Web App(Exchange 2013 本地)API 1.2 如何访问电子邮件正文?

2024-02-28

Office.context.mailbox.item.body给出 null 而

Office.context.mailbox.item.body.getAsync()仅适用于JavaScript API 1.3.

有没有办法获取电子邮件正文JavaScript API 1.1/1.2?


是的你可以。实际上,您将使用 Exchange Web 服务检索正文。

正如所解释的here https://stackoverflow.com/questions/35768988/how-to-get-recurrence-data-from-javascript-api-in-office365/35770085#35770085有两种方法可以执行此操作:1) 来自 javascript(客户端应用程序)的 SOAP 请求或 2) 使用 SDK(例如 .NET Exchange Web SDK)的服务器端

对于解决方案 1),您的请求可能类似于以下 js 片段(请注意,我使用了 angular.js 承诺that.$q.defer();但这不是强制性的)

           function getSoapEnvelope(request) {
            // Wrap an Exchange Web Services request in a SOAP envelope.
            var result =
            '<?xml version="1.0" encoding="utf-8"?>' +
            '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
            '               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
            '  <soap:Header>' +
            '     <t:RequestServerVersion Version="Exchange2013"/>' +
            '  </soap:Header>' +
            '  <soap:Body>' +
            request +
            '  </soap:Body>' +
            '</soap:Envelope>';

            return result;
           }



            var getBodyAsync = function () {
            var that =this;
            var deferred = that.$q.defer();

            function getHeadersRequest(id) {
                // Return a GetItem EWS operation request for the headers of the specified item.  
                var result =
             '    <GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">' +
             '      <ItemShape>' +
             '        <t:BaseShape>IdOnly</t:BaseShape>' +
             '        <t:BodyType>HTML</t:BodyType>' +
             '        <t:AdditionalProperties>' +
             '            <t:FieldURI FieldURI="item:Body"/>' +
             '        </t:AdditionalProperties>' +
             '      </ItemShape>' +
             '      <ItemIds><t:ItemId Id="' + id + '"/></ItemIds>' +
             '    </GetItem>';
                return result;
            }
                // Create a local variable that contains the mailbox. 
            var mailbox = Office.context.mailbox;
            var request = getHeadersRequest(mailbox.item.itemId);
            var envelope = getSoapEnvelope(request);

            var callback = function (data) {
                var $data = $(data.value);
                var $body = $("t\\:Body", $data);
                deferred.resolve($body.html());
            }

            mailbox.makeEwsRequestAsync(envelope, callback);
            return deferred.promise;
        };

对于解决方案 2),使用 .NET Exchange SDK

            ExchangeService service = new ExchangeService();
            service.Credentials = new OAuthCredentials(token);
            service.Url = new Uri(ewsUrl);

            PropertyDefinition definition = ItemSchema.NormalizedBody;
            var propertySet = new PropertySet(definition, ItemSchema.Attachments,
                ItemSchema.HasAttachments);
            EmailMessage ewsEmail = EmailMessage.Bind(service, new ItemId(itemId), propertySet);


            return ewsEmail.NormalizedBody.Text;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Outlook Web App(Exchange 2013 本地)API 1.2 如何访问电子邮件正文? 的相关文章

  • 在多项目解决方案中共享变量

    我正在使用 C 在 VS2010 中为 Outlook 2010 创建一个解决方案 该解决方案由 3 个项目组成 项目 A B 和 C 都依赖于此 它定义了需要从 B 和 C 访问的某些变量 函数 项目 B 需要从 A 读取变量 项目 C
  • Outlook 插件 window.open

    我是插件的新手 只想执行一个简单的任务 例如在任务栏中创建一个带有链接的按钮来打开浏览器 仅此而已 到目前为止 基于 ms 教程创建了项目 一切都运行良好 修复了证书问题 据我了解 这应该像创建一个带有 ExecuteFuncion 操作的
  • Outlook 的多合一插件

    我想开发一款适用于 Outlook 的一体化插件 这意味着该加载项将可用于所有 Outlook 客户端 桌面 Web 我读here我可以做到这一点 我已经为 Outlook Web 应用程序创建了加载项 并尝试将其部署到桌面客户端 但不知道
  • Office 365、Outlook 加载项图标不更新 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 开发 Office 365 Outlook 插件 更改了加载项图标 基本上只是用新图标替换了旧图标 图标具有相同的名称 图标在 OWA 上显示正常 但在 Outlook 2016 加
  • 获取 AppointmentItem 的日历所有者电子邮件地址

    我正在开发一个 Outlook 加载项以将所有约会发送到 Web 应用程序 但在持续获取 AppointmentItem 的 所有者 而不是组织者 时遇到了一些问题 例如 X 向 Y 和 Z 发送约会 加载项将从其中获取三个约会项目 我正在
  • Outlook AddIn:如何使用 Outlook 桌面显示 console.log?

    我正在使用 JavaScript 开发 Outlook 插件 我的功能在 Outlook Web 中运行良好 但在 Outlook Desktop 中不起作用 在 Outlook Web 中 我可以在浏览器的控制台中看到我的 console
  • Mac 上的 EWS 请求未响应并出现错误

    在我们的 Outlook 加载项中 我们使用makeEwsRequestAsync获取当前电子邮件MimeContent 我们了解通过 JavaScript API 使用 EWS 时存在 1MB 请求 响应限制 当我们在 Windows 上
  • IE11有支持BigInt的吗?

    我试图在 stackoverflow 和 google 中寻找答案 以了解在 IE 11 中支持 BigInt 的任何方式 有没有人成功为 IE 和旧版本的 Safari 添加 BigInt 支持 目前我正在开发一个使用 BigInt 的插
  • Outlook 2016 VSTO 文件夹添加事件仅触发一次

    正在创建一个 Outlook 插件来跟踪邮箱中的邮件处理 我正在包装文件夹和项目 向其中添加一些事件 并将它们存储在本地列表中 以避免 GC 在首次执行后清除所有事件 但是 文件夹添加事件仍然只触发一次 不确定是什么问题 using Sys
  • “UserControl”类型不支持直接内容

    我有一个 Outlook 2013 和 2016 VSTO 外接程序项目 并尝试将 WPF 用户控件添加到自定义任务窗格 如下所述here https msdn microsoft com en us library bb772076 as
  • VSTO Outlook:获取选定的附件

    我正在尝试对 Outlook 2010 中选定的附件执行操作 我在VS2012中创建了一个Outlook VSTO项目 这是用于在附件功能区上添加按钮的 XML
  • Outlook Web 添加 - 更改标题栏的颜色

    我正在尝试更改插件中标题栏的颜色 我在 xml 文件中看到它在标题栏上生成标题 挂接到标题栏的正确方法是什么 我看到 C 有类似的问题有什么方法可以更改 VSTO Outlook 添加中的边框 标题背景吗 https stackoverfl
  • 如何以编程方式判断安装了哪些 Outlook 插件以及它们是否已启用?

    如何确定安装了哪些 Outlook COM 或 PIA 插件以及它们是否已启用 我怎样才能获得这些信息 以及文件版本 1 如果您想从另一个 Outlook 加载项内部访问此信息 您可以使用 Application ComAddins 对象
  • Exchange ItemID 与 Outlook 加载项的 GlobalAppointmentID 不同

    我遇到的问题是 使用 Outlook FormRegion 创建的 Outlook 约会的 GlobalAppointmentID 与使用 EWS 托管 API 时的 ItemID 不同 我正在创建一个 Outlook 插件 允许用户将客户
  • 防止任务窗格在保存期间关闭(异步)

    我们使用 OfficeJs REST API 进行加载项开发 要使用此 API 需要一个 accesstoken 我们通过调用来请求该 accesstokenOffice mailbox getCallbackTokenAsync isRe
  • 如何循环访问某些 Outlook 子文件夹的所有 MailItem

    我正在开发 Outlook 2007 加载项 我找到了一些代码来循环所有文件夹 但我无法弄清楚如何循环inside任何给定的文件夹来检查 MailItem 对象 最终 我想将电子邮件保存在其他位置并修改 Subject 属性 这是我到目前为
  • Outlook Application_NewMailEx 在启动时不工作

    我正在使用一个Application NewMailEx处理收到的所有电子邮件 它适用于 Outlook 打开时收到的电子邮件 然而在启动时 Application NewMailEx不会因收到的电子邮件而被呼叫 我尝试使用Applicat
  • 具有图形 api 的 Outlook Web 插件

    我正在尝试制作 Outlook Web 插件 并希望在其中使用图形 api 如下所示单点登录文章 https learn microsoft com en us office dev add ins develop sso in offic
  • Outlook 2007 捕获 ReplyToAll 事件的共享加载项

    我正在使用 VS 2010 和 Dot Net Framework 2 0 我已在 扩展性 gt Outlook 共享加载项 中创建了一个项目 我正在尝试捕获 ReplyToAll 事件 但它没有被解雇 请看下面的代码 连接方法 inspe
  • 将 EWS 对话* 与 Outlook 插件对话* 相匹配

    几年前 我为 Outlook 编写了一个插件 它根据项目的条目将条目添加到数据库中 ConversationIndex ConversationId特性 这非常有效 并且在与消息交互的所有客户端之间保持统一 例如 Bob 可以看到 Mary

随机推荐