exchange-server - 在 Office365 REST邮件API中,检测日历事件邮件项

  显示原文与译文双语对照的内容

通过REST请求和ADAL库,我成功地从我们的Exchange在线服务器检索用户电子邮件。 我们正在检索和处理日历事件电子邮件,以及由 Outlook 。gmail/google日历。iPad和Android设备生成的日历事件。

我们一直在查找"会议。请求"或者"会议已经取消"的ClassName属性,但是这些值一周前被删除,并且没有返回。 我们现在一直在寻找非空MeetingMessageType属性( MeetingRequest或者 MeetingCancelled ),但是到目前为止,这些属性已经被删除。 这是不可思议的互操作数据,但我不知道下一步该去哪里。

如何从用户或者共享邮箱的邮箱中关联检索到的json邮件对象,以及( 交换。) 相关的日历事件? we process process我们可以在日历上清除会议创建。邀请。接受 等等 等消息项目,因为我们在处理日历时不能清除日历事件,因为我们不能清除日历事件。

我可以查询相关邮件id的日历? 我不认为这对每一条消息都是可能的。

谢谢!

编辑:@Venkat 感谢邮件项目比紧急日历事件标准更多的进程。 作为Exchange开发人员,我必须确实需要一个例子,如何更好地处理邮件绑定事件,而不是日历事件项。 好的,这里是一个:

我们正在做的一件事是将邮件/代工厂请求发送给特定邮箱以处理( 或者使用客户端和服务器规则来完成相同的任务) 。 然后可以轮询单个邮箱。共享邮箱和/或者邮箱集合以自动响应。 如果你希望使用第三方帐户,我们只尝试将事件推送到特定的守护程序帐户,但你可能会尝试使用共享邮箱来执行某些操作。routing move move move move move move 。change change routing 。routing change routing 。routing change routing routing redirect 。redirect change routing redirect redirect 。等等 change routing 。redirect change routing redirect 。change routing 。change routing redirect 。

其他人一样,我们正尝试集成云应用。 所以我们需要程序解析,数据处理,以及邮件和日历项的推送。 因这里,我们有服务器邮件处理规则。客户/用户邮件规则。邮件头修改( 轻松的项目数据修改) 。邮件自动响应。 日历事件没有得到任何东西。 另外,我们有一个比日历分类法( 几乎不存在) 更健壮的邮件文件夹分类。 对于第三种情况,日历事件邮件项目是用户特定的,并且具有比共享日历事件更少的持久值。 最后,如果我们处理邮件项,任何way--为什么至少有一个事件的eventId? 为什么要删除所有互操作信息? 有一个eventId完全消除了对返回多个项的日历端点的查询,并且没有针对邮件端点添加任何附加查询。

Google包含了一个附加的ic 。 即使你从API邮件项中删除了事件项附件,我也不知道为什么要删除,。 通过邮件处理日历事件不是什么新鲜事,但是我们必须在两个对象之间有一个数据绑定,这样做。 就这些了。

当邮件项目是日历事件时,我的exchangeserver仍然知道。 它不会再告诉 ~me~, 了如果我再问一遍。 因此,作为 brutish,我可以设置一个邮件规则来为所有类型为"会议要求"的传入消息添加一个"api_calendarevent"类别。 然后,在对邮件项进行REST调用之后,可以解析类别以手动重新填充类属性。 但是为什么要从邮件项目中删除附件。类名。MeetingMessageType和 EventId? 即使我将某些邮箱中的某些邮件项归类为日历事件,也可以知道何时轮询事件 details-- 。 我们只需要避免跨多个日历的盲轮询,就是为了保留ccr和/或者类别。 然后我们还有大量的日历处理自动化,目前已经从API中删除了。

谢谢!

时间: 作者:

感谢对我评论的详细回应 ! 你的场景是我们希望支持的。 作为模式清理的一部分,我们从消息中删除了事件ID和会议消息类型,因为每个消息都包含了它。 对于日历邀请和响应,我们计划添加 2个属性: 1.指向相关事件的导航链接,因此可以单击该事件,并在该事件上采取操作,如果你有日历权限。 2.已经接受日历响应类型 比如 会议,会议谢绝 等等,因此你知道你收到的页面的类型。

我们目前正在进行设计,但没有精确的时间线来共享。 但是,我们会尽快更新我们的文档,只要有这个 API 。

[UPDATE] 我们现在将日历事件邀请和响应作为EventMessage返回,这是一个消息子类。 这个实体包含一个名为MeetingMessageType的属性和一个指向用户日历上对应事件的导航链接。 请参见下面的示例:


{
 @odata.context:"https://outlook.office365.com/api/v1.0/$metadata#Users('<snipped>')/Messages/$entity",
 @odata.type:"#Microsoft.OutlookServices.EventMessage",
 @odata.id:"https://outlook.office365.com/api/v1.0/Users('<snipped>')/Messages('<snipped>')",
 @odata.etag:"<snipped>",
 Id:"<snipped>",
 ChangeKey:"<snipped>",
 Categories: [ ],
 DateTimeCreated:"2015-04-08T14:37:55Z",
 DateTimeLastModified:"2015-04-08T14:37:55Z",
 Subject:"<snipped>",
 BodyPreview:"",
 Body: {
 ContentType:"HTML",
 Content:"<snipped>"
 },
 Importance:"Normal",
 HasAttachments: false,
 ParentFolderId:"<snipped>",
 From: {
 EmailAddress: {
 Address:"<snipped>",
 Name:"<snipped>"
 }
 },
 Sender: {
 EmailAddress: {
 Address:"<snipped>",
 Name:"<snipped>"
 }
 },
 ToRecipients: [{
 EmailAddress: {
 Address:"<snipped>",
 Name:"<snipped>"
 }
 }],
 CcRecipients: [ ],
 BccRecipients: [ ],
 ReplyTo: [ ], 
 ConversationId:"<snipped>",
 DateTimeReceived:"2015-04-08T14:37:55Z",
 DateTimeSent:"2015-04-08T14:37:48Z",
 IsDeliveryReceiptRequested: null,
 IsReadReceiptRequested: false,
 IsDraft: false,
 IsRead: false,
 WebLink:"<snipped>",
 MeetingMessageType:"MeetingRequest",
 Event@odata.navigationLink:"https://outlook.office365.com/api/v1.0/Users('<snipped>')/Events('<snipped>')"
}

如果你有任何问题或者需要更多信息,请让我知道我们建议的变更是否符合你的要求。

谢谢,

Venkat

...