有没有办法解密Microsoft Graph API中的Outlook邮件ID?

时间:2017-06-14 07:56:21

标签: email webhooks microsoft-graph outlook-restapi

如果A向B发送电子邮件,然后您连接到每个人的Microsoft Graph API,则会出现一个问题:' internetMessageId' A"发送电子邮件"和B"收件箱"但是Outlook ID(' Id')是不同的。

- >有没有办法在Outlook Id中解码/检测它是相同的电子邮件但从不同的邮箱中看到的事实?

背后有一个简单的问题:如果我为公司的所有员工邮箱订阅webhooks(让我们说1000人),并且1个人向"所有公司发送电子邮件"组。然后我的服务器将收到有关此电子邮件的1001 POST。由于通知参数中的唯一信息是Outlook消息ID,我无法检测到它是关于同一消息的。唯一的方法是对图API进行1001次调用以获取internetMessageId,然后在此基础上进行过滤。它似乎非常沉重和资源消耗。有没有办法避免这种情况?无论是来自webhook方面,还是来自通知内容,还是来自Outlook Message Id解码?

感谢。

1 个答案:

答案 0 :(得分:2)

不,Id是不透明的。它不是基于互联网消息ID。

Microsoft Graph API不支持向通知有效负载添加字段,但Outlook REST API本身也支持。如果直接使用Outlook端点(https://outlook.office.com/api/),则可以使用$select使用我们称之为“富通知”的功能来获取通知有效内容中的其他字段。

文档:https://msdn.microsoft.com/en-us/office/office365/api/notify-rest-operations#subscribe-to-changes-in-my-mail-calendar-contacts-or-tasks

您的订阅请求类似于:

{
  "@odata.type": "#Microsoft.OutlookServices.PushSubscription",
  "Resource": "https://outlook.office.com/api/beta/me/mailfolders/Inbox/messages?$select=Subject,InternetMessageId",
  "NotificationURL": "https://mywebapp.contoso.com/notifications",
  "ChangeType": "Created,Deleted,Updated",
  "ClientState": "Message unread"
}

然后,通知将包含一个带有请求字段的ResourceData对象。

{
  "value": [
    {
      "@odata.type": "#Microsoft.OutlookServices.Notification",
      "Id": null,
      "SubscriptionId": "NjkyM0MwM0MtREJERi00MUY5LTlCMkQtQkRFOTREOTlEQ0EwX0ZDQkY1RTIwLUI1M0UtNENEQS05MEQyLTQyMkNBOUI4MkE1Mg==",
      "SubscriptionExpirationDateTime": "2017-06-29T20:57:26.3294822Z",
      "SequenceNumber": 3,
      "ChangeType": "Created",
      "Resource": "https://outlook.office.com/api/beta/Users('1b1a2064-54a3-4f6e-b187-c1388c69fc0c@c4dd2789-1144-4832-bfaa-87f9955f5ef6')/Messages('AAMkAGZjYmY1ZTIwLWI1M2UtNGNkYS05MGQyLTQyMmNhOWI4MmE1MgBGAAAAAACiItQsBUn9QIuhejMqYpj5BwBk23L_AKqTR5R9JLmwxOUMAAAAAAEMAABk23L_AKqTR5R9JLmwxOUMAAC1vTIkAAA=')",
      "ResourceData": {
        "@odata.type": "#Microsoft.OutlookServices.Message",
        "@odata.id": "https://outlook.office.com/api/beta/Users('1b1a2064-54a3-4f6e-b187-c1388c69fc0c@c4dd2789-1144-4832-bfaa-87f9955f5ef6')/Messages('AAMkAGZjYmY1ZTIwLWI1M2UtNGNkYS05MGQyLTQyMmNhOWI4MmE1MgBGAAAAAACiItQsBUn9QIuhejMqYpj5BwBk23L_AKqTR5R9JLmwxOUMAAAAAAEMAABk23L_AKqTR5R9JLmwxOUMAAC1vTIkAAA=')",
        "@odata.etag": "W/\"CQAAABYAAABk23L+AKqTR5R9JLmwxOUMAAC131Ep\"",
        "Id": "AAMkAGZjYmY1ZTIwLWI1M2UtNGNkYS05MGQyLTQyMmNhOWI4MmE1MgBGAAAAAACiItQsBUn9QIuhejMqYpj5BwBk23L_AKqTR5R9JLmwxOUMAAAAAAEMAABk23L_AKqTR5R9JLmwxOUMAAC1vTIkAAA=",
        "InternetMessageId": "<DM5PR20MB1417BF6C48A2C62E529021BF9EDD0@DM5PR20MB1417.namprd20.prod.outlook.com>",
        "Subject": "Testing this"
      }
    }
  ]
}