sharePoint在线统计来自office365的未读邮件

时间:2014-11-02 16:04:36

标签: javascript ajax json sharepoint office365

作为旨在显着改善SharePoint Online网站视觉效果的项目的一部分,我有点卡住了。在左侧横幅的主页上,用户希望查看他们在Office365中拥有的未读邮件数。

我在母版页中创建了一个区域来放置结果。我认为Rest API用于执行此操作:

$.ajax ({
    type: "GET",
    url: " https://outlook.office365.com/ews/odata/Me/Folders/Inbox",
    dataType : "json",
    success : function (resp) {
        // count unread messages 
    },
    error : function (e) {
        alert (' Error121212 :' + JSON.stringify (e));
    }
 })

不幸的是我收到了像跨域这样的错误。我尝试使用JSONP,但它也不起作用(未捕获的语法错误意外令牌)。

请告诉我这是不是一个好习惯?我觉得无论如何我必须找到一种认证技术。 (在JSONP的情况下,我有一个弹出窗口,要求我进行身份验证,然后显然会在回调上出现问题)......

我想避免开发一种需要典型部署Wsp的类型......

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您的ajax请求的网址似乎不正确。通过API获取收件箱邮件的网址为:https://outlook.office365.com/api/v1.0/me/folders/inbox/messages

获得响应后,您可以使用简单的for循环计算IsRead属性设置为false的对象数,并显示该计数。

答案 1 :(得分:0)

此处的问题与CORS以及浏览器拒绝处理跨域请求有关。要解决这个问题,通常你会

  • 更改远程服务器上的响应标头 - 此处不是选项
  • 使用某种代理来处理请求 - 这是SharePoint应用程序的用武之地。

我知道您规定要避免使用WSP样式部署,但根本没有解决方法,您必须使用SharePoint App模型

This文章很大程度上回答了您的问题,但完成后基本步骤如下

  1. 在Visual Studio中创建SharePoint托管应用程序
  2. 在App Manifest中,您需要使用AppManifest部分定义与远程主机(在本例中为outlook.office365.com的主机)的信任关系

  3. 使用SP.RequestExecutor.executor代表您提出请求