outlook - Microsoft 图形 API - 空的 bccRecipients 列表
问题描述
这是场景:
在同一个 Azure 租户中,我使用一个帐户( ) 使用 Outlook (o365)user_1_address
向另一个帐户 ( ) 发送电子邮件。user_2_address
我发送了 3 封电子邮件,一封user_2_address
是密件抄送的,一封是抄送的,另一封是收件人。
user_2_address
我正在使用 Microsoft graph API 获取在特定时间范围内收到的电子邮件列表,使用以下查询:
https://graph.microsoft.com/v1.0/users/{<user_2_id>}/messages?$filter=
receivedDateTime ge <some date> and receivedDateTime lt <some other date>
and isDraft eq false
and sender/emailAddress/address ne '<user_2_address>'
我user_2_address
收到了从收到的所有三封电子邮件user_1_address
。但是在电子邮件 user_2 被密件抄送时,bccRecipients
列表是空的,它应该包含user_2_address
:(
我已经看到有关从 Gmail 和密件抄送 Outlook 用户发送电子邮件的问题:
在这种情况下,bccRecipients
列表也是空的,但通过说从外部来源(在这种情况下为 Gmail)发送电子邮件时删除了密件抄送来解决。当对我来说它不是外部来源时 - 两个用户都在同一个租户中使用 Outlook。
所以我的问题是:
- 这是期望的行为,还是错误?
- 现在,假设我正在使用上面的查询,我在其中收到所有发件人不是发件人且
user_2_address
不是草稿的电子邮件。我可以假设我收到的每封电子邮件user_2_address
都不在ccRecipients
和toRecipients
列表中 - 该电子邮件被密件抄送user_2_address
吗?
谢谢!
解决方案
消息中的密件抄送字段仅是一个信封 (P1) 收件人,因此您应该始终期望它是空白的(无论租户内部的上下文是否真的没有区别)。就像引用的其他帖子一样,如果它不是空白,它将破坏 RFC 和密件抄送的目的,唯一的例外是已发送的项目(它只是已发送消息的副本)
不,有很多场景会破坏这种特定逻辑,例如转发的电子邮件就是想到的一种。您当然可以通过这种方式优化您的结果集,您可能想要检查的一件事是 X-MS-Exchange-Organization-Recipient-P2-Type: 应该在内部到内部场景中设置的邮件标头(您需要查看在 PidTagTransportMessageHeaders 扩展属性中查看)
推荐阅读
- python - Lambda 表达式和字符串
- database - 用于大型媒体嵌套元数据查询的最快 AWS DB 服务
- c - if/else if 语句中的条件格式是否必须在 C 中匹配?
- c# - Cancel all Task.Run executing particular method
- javascript - 在嵌套数组中查找项目的索引
- bonita - 如何使用表单的一个字段填充 Bonita 中的其他字段?
- html - 如何使用 curl 手动登录 HG 路由器?
- google-chrome - 为什么在 --disable-web-security 和删除 x-frame-options 标头之后仍然显示此错误?
- java - 休眠:哪一列???将数据类型 nvarchar 转换为数值时出错
- r - 生成与现有数据相关的随机序数变量