如果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解码?
感谢。
答案 0 :(得分:2)
不,Id
是不透明的。它不是基于互联网消息ID。
Microsoft Graph API不支持向通知有效负载添加字段,但Outlook REST API本身也支持。如果直接使用Outlook端点(https://outlook.office.com/api/
),则可以使用$select
使用我们称之为“富通知”的功能来获取通知有效内容中的其他字段。
您的订阅请求类似于:
{
"@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"
}
}
]
}