我已经成功创建了一个订阅,用于接收有关新电子邮件到达指定通知URL的通知。每次调用创建订阅的API时,我都会收到订阅ID。但是由于某些原因,当我向连接的电子邮件地址发送电子邮件时,Graph API不会进行通知(在Subscription对象中指定了通知URL)。
我承认,一开始我错过了通过HTTP接受的状态代码对Graphs通知请求进行正确响应的机会。
我已经阅读了此答案,但没有太多建议Here。有帮助吗?
订阅对象
Subscription subscription = new Subscription()
{
ChangeType = "updated",
NotificationUrl = "XXNotificationUrlXX",
Resource = "users/" + UserId + "/messages",
ExpirationDateTime = DateTime.UtcNow.AddMinutes(15),
ClientState = ClientStateForNewEmail
};
创造成功响应
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#subscriptions/$entity",
"id": "7b468a72-f521-43e3-aadc-7133282437f3",
"resource": "users/{UserId}/messages",
"applicationId": "XXAppIdXX",
"changeType": "updated",
"clientState": "XXClientStateXX",
"notificationUrl": "XXNotificationUrlXX",
"expirationDateTime": "2020-07-20T18:27:37.9356913Z",
"creatorId": "44d82a81-a027-473f-92ac-621108163c94",
"latestSupportedTlsVersion": "v1_2"
}
我代表Apps在使用,这就是为什么:user / {UserId} / messages
创建代码
var subrslt = await graphServiceClient.Subscriptions.Request().AddAsync(subscription).ConfigureAwait(false);
通知网址代码:
try
{
return _TrialRunService.postrequest(validationToken).Result;//returns Accepted if no error
}
catch (Exception ex)
{
try
{
//Log if any error
}
catch {//To Guarantee Accepted Response(in any case) delivery to Graph Api }
}
return new HttpResponseMessage(HttpStatusCode.Accepted) { Content = new StringContent("") };
无论我们是否遇到任何错误,我都试图保证对Graph API的接受响应。
答案 0 :(得分:0)
您的订阅使用的是更新的更改类型。因此,只有当有人编辑邮箱中已存在的电子邮件时,才会触发该消息。 要接收有关新电子邮件的通知,需要“创建”更改类型。