如何在Graph API中获取回复邮件的parent_message_id
如何从跨平台回复邮件的Graph API响应中获取父邮件ID
当收到Gmail等其他平台的回复邮件时,Graph API返回的邮件对象里没有直接提供parent_message_id字段,可以通过以下两种方式定位父邮件:
方法1:通过对话ID(conversationId)查询
同属一个邮件对话的所有邮件会共享同一个conversationId,可利用这个ID筛选对话内的所有邮件,再定位父邮件:
- 从回复邮件的响应中提取
conversationId,示例中的值为:AQQkADAwATM3ZmYAZS01OWRhLTM5MjgtMDACLTAwCgAQAAo6snnrhhJOv0qLJ4Io1Fo= - 调用Graph API查询该对话下的所有邮件:
GET /me/messages?$filter=conversationId eq 'AQQkADAwATM3ZmYAZS01OWRhLTM5MjgtMDACLTAwCgAQAAo6snnrhhJOv0qLJ4Io1Fo=' - 在返回的邮件列表中,通过发送时间最早、主题不含
Re:前缀的特征找到父邮件,其id就是所需的父邮件ID。
方法2:解析邮件头获取原始父邮件标识
跨平台回复的邮件会在邮件头中携带父邮件的标识,需额外请求获取邮件头后解析:
- 从回复邮件的响应中提取邮件自身的
id,示例中的值为:AQMkADAwATM3ZmYAZS01OWRhLTM5MjgtMDACLTAw.... - 调用Graph API获取该邮件的完整邮件头:
GET /me/messages/{messageId}/?$select=internetMessageHeaders - 在返回的
internetMessageHeaders中,找到In-Reply-To或References字段,其值就是父邮件的internetMessageId(格式类似<xxx@xxx.com>) - 用这个
internetMessageId查询对应的父邮件:GET /me/messages?$filter=internetMessageId eq '<父邮件的internetMessageId>' - 从查询结果中提取父邮件的
id即可。
内容的提问来源于stack exchange,提问作者Bhavya Ardeshana
相关产品推荐
相关产品推荐

