如何在UWP应用程序中使用Microsoft Graph自动获取新电子邮件

时间:2018-06-11 14:29:16

标签: c# uwp microsoft-graph

我已使用OAuth成功连接到Microsoft Graph。我可以从Office365帐户接收和发送电子邮件。

但我完全坚持如何自动接收电子邮件,类似于IMAP IDLE例程。

我正在引用

using Microsoft.Graph;
using Microsoft.Toolkit.Services.MicrosoftGraph;

我尝试过订阅,但不知道接下来要做什么,或者即使这是正确的。

Subscription sub = new Subscription {
    ChangeType = "created",
    NotificationUrl = "urn:ietf:wg:oauth:2.0:oob",
    Resource = "/users/me/messages",
    ExpirationDateTime = DateTimeOffset.Now.AddMinutes(20),
    ClientState = "????" // if applicable, what is this
};

2 个答案:

答案 0 :(得分:4)

要进行订阅,您需要使用https公开通知网址(请参阅graph documentation)。

POST https://graph.microsoft.com/v1.0/subscriptions
 Content-Type: application/json
 {
   "changeType": "created,updated",
   "notificationUrl": >  "https://webhook.azurewebsites.net/notificationClient",
   "resource": "/me/mailfolders('inbox')/messages",
   "expirationDateTime": "2016-03-20T11:00:00.0000000Z",
   "clientState": "SecretClientState"
 }

如果您想要示例graph documentation引用Node.jsasp.net示例。两者都使用ngrok来公开https URL(仅用于测试目的)。程序将HTTP请求隧道传送到您的localhost(如反向代理)。如果您有此设置,则必须验证您的请求。当您发送订阅请求时,通知UR​​L将收到的第一条发布消息是带有验证令牌的消息(请参阅doc)。您必须重新发送此验证令牌。现在,您应该会收到有关指定通知网址的通知。

您可以在graph documentation中了解订阅资源类型及其属性。 例如,客户端状态描述为:

  

指定服务在每个通知中发送的clientState属性的值。最大长度为255个字符。 客户端可以通过将通过订阅发送的clientState属性的值与每个通知收到的clientState属性的值进行比较来检查通知来自服务

答案 1 :(得分:0)

此时无法使用Microsoft Graph for UWP进行订阅,对于应使用Outlook 365 API的通知。 Microsoft图形api可用于Auth和其他任务。

Microsoft可以考虑在Microsoft Graph中包含流式传输通知吗?