标签: outlook-restapi

Outlook API OAuth2使用php进行脱机访问/永久访问

我按照下面的教程使用outlook api获取邮件.这有效,但要求用户每次登录才能进行访问.有没有办法提供永久/离线访问?类似于gmail api的工作方式(当你不在键盘时访问)

https://dev.outlook.com/RestGettingStarted/Tutorial/php

php outlook office365-apps outlook-restapi

5
推荐指数
1
解决办法
2377
查看次数

从Outlook Web加载项访问Outlook RestAPI

我开发了一个工作正常的Outlook Web加载项.这是一个Taskpane,可以在约会的撰写模式中使用,它可以收集事件的数据,添加一些数据并将其全部发送到某个API.

我现在要做的是将经过身份验证的用户订阅到Outlook Rest API,以便在删除事件时收到通知.

订阅调用应该如下所示:

POST https://outlook.office.com/api/v2.0/me/subscriptions HTTP/1.1 
Content-Type: application/json 
{ 
  @odata.type:"#Microsoft.OutlookServices.PushSubscription", 
  Resource: "https://outlook.office.com/api/v2.0/me/events", 
  NotificationURL: "https://myNotifAPI.azurewebsites.net/api/send/myNotifyClient", 
  ChangeType: "Deleted", 
  ClientState: "blabla" 
}
Run Code Online (Sandbox Code Playgroud)

我知道我需要在发布到订阅URL时提供有效的身份验证承载令牌,因此我尝试在我的加载项中调用此方法:

_mailbox = Office.context.mailbox;
_mailbox.getUserIdentityTokenAsync(getUserIdentityTokenCallback);
Run Code Online (Sandbox Code Playgroud)

在函数中getUserIdentityTokenAsync,我调用一个WebApi Controller来验证我的令牌并将其发送回加载项:

AppIdentityToken token = (AppIdentityToken)AuthToken.Parse(rawToken);
token.Validate(new Uri(request.AudienceUrl));
return token;
Run Code Online (Sandbox Code Playgroud)

我试图使用该令牌发布到https://outlook.office.com/api/v2.0/me/subscriptions(使用Postman),但我得到了401说:

reason="The audience claim value is invalid '<MyAddInURL>'.";error_category="invalid_resource"
Run Code Online (Sandbox Code Playgroud)

它是在特定情况下使用的正确令牌还是我需要另一个?任何建议将不胜感激!

- 编辑 -

正如@ benoit-patra所建议的那样,我尝试使用getCallbackTokenAsync而不是使用令牌,getUserIdentityTokenAsync但是当我打电话时,https://outlook.office.com/api/v2.0/me/subscriptions我确实收到了403:

"error": {
    "code": "ErrorAccessDenied",
    "message": "The api you are trying to access does not support item scoped OAuth."
  } …
Run Code Online (Sandbox Code Playgroud)

office-addins outlook-addin outlook-restapi office-js outlook-web-addins

5
推荐指数
2
解决办法
992
查看次数

Microsoft Graph API-503服务不可用

我正在努力将Microsoft Graph与Rails Web应用程序集成。我们正尝试通过Graph发送多封电子邮件,但有时我们会收到503 Service Unavailable带有以下标头和正文的:

响应头:

{
  "content-type": [
    "text/html; charset=us-ascii"
  ],
  "server": [
    "Microsoft-HTTPAPI/2.0"
  ],
  "date": [
    "Wed, 30 May 2018 22:05:31 GMT"
  ],
  "connection": [
    "close"
  ],
  "content-length": [
    326
  ]
}
Run Code Online (Sandbox Code Playgroud)

响应主体:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
    <TITLE>Service Unavailable</TITLE>
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">
</HEAD>
<BODY>
    <h2>Service Unavailable</h2>
    <hr>
    <p>HTTP Error 503. The service is unavailable.</p>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

我们使用该POST https://graph.microsoft.com/v1.0/me/sendMail呼叫发送数百封Outlook电子邮件。使用Graph API发送大约100-200封电子邮件后,我们收到了503 Service Unavailable错误消息。当我们必须发送1000多个自定义电子邮件时,这是有问题的,因为我不清楚我们如何在不知道重试和其他Graph API请求之前要等待多长时间的情况下,如何正确处理错误 …

outlook-restapi microsoft-graph

5
推荐指数
1
解决办法
676
查看次数

如何通过Office365 Rest API访问共享邮箱?

如果共享邮箱是使用用户的OAuth与用户共享的,则我们可以访问该邮箱.在这里,我想通过Office 365 Rest API访问没有用户的共享邮箱.是否可以通过Rest API?或者我们可以通过EWS或Graph APIS实现相同目标吗?

exchangewebservices office365 outlook-restapi

5
推荐指数
0
解决办法
329
查看次数

Outlook 365 Rest API - 受众声明值无效

我正在开发一个当前项目,我们已经使用Identity Server进行身份验证.在这里,我们使用Access令牌访问microsoft Graph API以获取会议,个人资料图片和其他内容.

现在,我们希望与新的Outlook 365 API进行集成,以便在将来的写入任务中进行读取.

我正在尝试使用已存在的accesstoken从Outlook restapi获取Outlook任务:

{
  "aud": "https://graph.microsoft.com",
  "iss": "https://sts.windows.net/17e18230-55e1-4f60-8262-5c67e2b2ab11/",
  "iat": 1145153145,
  "nbf": 1491225024,
  "exp": 1491258924,
  "acr": "1",
  "aio": "QSQA8/8DAFFFInSl+iIfvSXhA95NqTYRmKugpaLdvffNkba0L8N5x0U=",
  "amr": [
    "pwd"
  ],
  "app_displayname": "AwesomeApp.Dev",
  "appid": "0c2fgc75-f2ee-fas5-ae9f-fasd2s5d523fs",
  "appidacr": "1",
  "family_name": "Jesper Krægpøth Ryder",
  "given_name": "Joshua",
  "ipaddr": "208.67.222.222",
  "name": "Joshua Jesper Krægpøth Ryder",
  "oid": "a4586g1-d0215-3226-ar05-125463gasrqw5",
  "platf": "3",
  "puid": "654wf84yu3s1g6",
  "scp": "Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Directory.Read.All Files.ReadWrite Group.Read.All Mail.ReadWrite Mail.Send Tasks.Read User.Read User.ReadBasic.All User.ReadWrite",
  "sub": "0s_x0JhaNb1QLpIM2Hldx7pSVkrpTgXKe4QPXXiRguQ",
  "tid": "15e18430-54e9-4f60-8821-5c85e2b2ab77",
  "unique_name": "jor@awesome.com",
  "upn": "jor@awesome.com",
  "uti": "65a2gasdrfasda_fasfa54153",
  "ver": "1.0"
}
Run Code Online (Sandbox Code Playgroud)

https://outlook.office.com/api/v2.0/me/tasks …

.net c# .net-core outlook-restapi

4
推荐指数
1
解决办法
3013
查看次数

在Outlook加载项中何时使用EWS与Rest API的持久传奇

这个问题基于我之前提出一个问题,但后来有了更多细节和经验.

首先是一些背景,我有一个Outlook Addin应该转发用户消息,然后将消息移动到特定文件夹.这需要在OWA和Outlook 2016环境中适用于Prem Exchange.它既适用于以前的客户端,也适用于O365用户的Outlook Mobile App.

我的具体问题归结为检测何时使用EWS与Rest API(甚至是MS Graph API).

这是我的代码片段:

Office.initialize = function() {
    $(document).ready(function() {
        $('#forward').click(forwardMessage);
    });
}; 

function forwardMessage() {
    if(Office.context.mailbox.restUrl) { // The problem child
        forwardEWS(); // Works like a charm
    } else {
        forwardRest(); // Works fine for O365 users
    }
}

function forwardRest() {
    var restHost = Office.context.mailbox.restUrl;
    var restId = getItemRestId();

    Office.context.mailbox.getCallbackTokenAsync({isRest: true}, function(result){
        if (result.status === "succeeded") {
            var accessToken = result.value;

            $.ajax({
                url: restHost + '/v2.0/me/messages/' …
Run Code Online (Sandbox Code Playgroud)

outlook exchangewebservices outlook-restapi office-js outlook-web-addins

4
推荐指数
1
解决办法
582
查看次数

发送包含来自用户收件箱的不同邮件作为附件的新邮件

我正在开发一个多租户守护程序应用程序。应用程序需要代表用户发送电子邮件。应用程序发送的电子邮件必须包含来自用户收件箱的另一封电子邮件作为附件。

这可以通过简单地引用现有电子邮件的 id 而不是下载现有电子邮件的内容来实现吗?

我正在尝试下面这样的事情。使用sendMailapi 并尝试将现有电子邮件项目作为附件引用。但我收到此错误:

无法处理抽象类型的输入 Microsoft.OutlookServices.Item

我是在正确的方向吗?实现此用例的最佳方法是什么。

POST https://graph.microsoft.com/v1.0/me/sendMail HTTP/1.1
authorization: bearer {access_token}
content-type: application/json
content-length: 96

{
    "message": {
        "subject": "Meet for lunch?",
        "body": {
            "contentType": "Text",
            "content": "The new cafeteria is open."
        },
        "toRecipients": [{
            "emailAddress": {
                "address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
            }
        }],
        "attachments": [
            "@odata.type": "#Microsoft.OutlookServices.ItemAttachment",
            "name": "menu.txt",
            "item": {
                "id": "AAMkADBlOWNlOWExLTdjMzktNDI5NC04MDY3LTRiZGM2NTIxMzUyNABGAAAAAAC11nCh2QXMSJ7F766v_WCUBwBSt5DMAwrBRJGMMbg9jqoYAAAGNiHGAABSt5DMAwrBRJGMMbg9jqoYAAAJXgInAAA="
                <!--This is the id of an existing email in User's inbox -->
            }
        ]
    },
    "saveToSentItems": "false"
}
Run Code Online (Sandbox Code Playgroud)

outlook-restapi microsoft-graph-api

4
推荐指数
1
解决办法
1231
查看次数

如何知道收件箱是哪个mailFolder?

调用/users/me/mailFolders将返回文件夹列表及其iddisplayNameparentFolderId和一些计数器。

如何确定哪个文件夹是“收件箱”?

我无法使用displayName,因为这可能是用户的母语。这Id只是一个随机字符串。

我需要这个,因为我的应用程序填充文件夹列表,并且我想将“选择”默认为收件箱(就像 Outlook 一样)。

outlook-restapi microsoft-graph-api

4
推荐指数
1
解决办法
4400
查看次数

通过客户凭证流进行图式身份验证-我的应用程序是否只能访问我的用户帐户或整个组织?

我有一个守护程序脚本,需要访问我的Office 365收件箱才能阅读消息。目前,我正在将基本身份验证与Outlook Rest API的V1.0一起使用,效果很好,但由于已终止,因此我希望转向Graph API和OAuth 2.0身份验证。客户credentails流,如所描述这里似乎是一个守护进程脚本是最好的选择,但是,我很困惑的权限范围的应用都会有。我在上面链接的文章看起来好像该应用程序可以访问整个组织,但我只需要脚本即可访问我自己的帐户。我不希望我的应用访问其他用户的帐户,并且我认为我们的IT部门也不允许这样做。

那么,使用客户端凭据身份验证时应用程序权限的范围是什么? 如果答案是“整个组织”,那么是否有办法将权限限制为仅我的帐户?如果没有,我还有其他选择吗?

编辑:这里提出类似的问题,但没有得到任何答案。

outlook-restapi microsoft-graph

4
推荐指数
1
解决办法
404
查看次数

如何在特定时间间隔内从收件箱读取我的消息或从特定电子邮件地址发送的邮件?

我正在使用图形浏览器 API 来读取我帐户的电子邮件。这个想法是将电子邮件地址和日期间隔传递给图形 API,它应该返回与此电子邮件关联的相同消息。它可能来自已发送的项目,也可能来自收件箱。我正在使用下面的API:

https://graph.microsoft.com/v1.0/me/messages?$Search="Aj****@t**maxa****icas.com
and Sent >= 2018-05-09"
Run Code Online (Sandbox Code Playgroud)

但这是从我的收件箱发送的消息,而不是从发送的电子邮件发送的消息。任何人都可以帮助我吗?谢谢。

outlook-restapi microsoft-graph-api

4
推荐指数
1
解决办法
4104
查看次数