Microsoft graph API - 空 bccRecipients 列表
Microsoft graph API - empty bccRecipients list
这是场景:
在同一个 Azure 租户中,我使用一个帐户 (user_1_address
) 使用 outlook (o365) 向另一个帐户 (user_2_address
) 发送电子邮件。
我发送了 3 封电子邮件,其中一封 user_2_address
被密件抄送,一封被抄送,另一封是收件人。
我正在使用 Microsoft graph API 获取特定时间范围内 user_2_address
收到的电子邮件列表,使用此查询:
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 和 BCC 向 Outlook 用户发送电子邮件的问题:
在那种情况下,bccRecipients
列表也是空的,但通过说从外部来源(在这种情况下是 Gmail)发送电子邮件时删除密件抄送来解决。对我而言,这不是外部来源 - 两个用户都在同一个租户中使用 outlook。
所以我的问题是:
- 这是期望的行为,还是错误?
- 现在,假设我正在使用上面的查询,其中我收到发件人不是
user_2_address
且不是草稿的所有电子邮件。我可以假设我收到的每封电子邮件 user_2_address
不在 ccRecipients
和 toRecipients
列表中 - 该电子邮件被密件抄送到 user_2_address
?
谢谢!
消息中的 bcc 字段只是一个信封 (P1) 收件人,因此您应该始终期望它是空白的(无论租户内部的上下文真的没有什么区别)。与引用的其他 post 一样,如果它不是空白,它会破坏 RFC 和 BCC 的目的,唯一的例外是已发送的项目(它只是已发送消息的副本)
不,有很多情况会破坏该特定逻辑,例如转发的电子邮件是我想到的一种情况。您当然可以通过这种方式优化结果集,您可能想要检查的一件事是 X-MS-Exchange-Organization-Recipient-P2-Type: mail header 应该在内部到内部场景中设置(您需要查看在 PidTagTransportMessageHeaders extended 属性 看到它)
这是场景:
在同一个 Azure 租户中,我使用一个帐户 (user_1_address
) 使用 outlook (o365) 向另一个帐户 (user_2_address
) 发送电子邮件。
我发送了 3 封电子邮件,其中一封 user_2_address
被密件抄送,一封被抄送,另一封是收件人。
我正在使用 Microsoft graph API 获取特定时间范围内 user_2_address
收到的电子邮件列表,使用此查询:
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 和 BCC 向 Outlook 用户发送电子邮件的问题:
在那种情况下,bccRecipients
列表也是空的,但通过说从外部来源(在这种情况下是 Gmail)发送电子邮件时删除密件抄送来解决。对我而言,这不是外部来源 - 两个用户都在同一个租户中使用 outlook。
所以我的问题是:
- 这是期望的行为,还是错误?
- 现在,假设我正在使用上面的查询,其中我收到发件人不是
user_2_address
且不是草稿的所有电子邮件。我可以假设我收到的每封电子邮件user_2_address
不在ccRecipients
和toRecipients
列表中 - 该电子邮件被密件抄送到user_2_address
?
谢谢!
消息中的 bcc 字段只是一个信封 (P1) 收件人,因此您应该始终期望它是空白的(无论租户内部的上下文真的没有什么区别)。与引用的其他 post 一样,如果它不是空白,它会破坏 RFC 和 BCC 的目的,唯一的例外是已发送的项目(它只是已发送消息的副本)
不,有很多情况会破坏该特定逻辑,例如转发的电子邮件是我想到的一种情况。您当然可以通过这种方式优化结果集,您可能想要检查的一件事是 X-MS-Exchange-Organization-Recipient-P2-Type: mail header 应该在内部到内部场景中设置(您需要查看在 PidTagTransportMessageHeaders extended 属性 看到它)