从传入的电子邮件创建“回复所有人”后,我需要删除不允许收到此回复的收件人。但在创建回复邮件后,回复邮件的收件人列表(ToRecipients,CcRecipients,BccRecipients)为空。
ResponseMessage responseMessage = email.CreateReply(true);
foreach (EmailAddress toRecipient in responseMessage.ToRecipients)
{
if (! _outboundEmailAdresses.Contains(toRecipient.Address))
{
responseMessage.ToRecipients.Remove(toRecipient.Address);
}
}
`
如果我遍历email.ToRecipients,我会看到所有收件人。如果我遍历responseMessage.ToRecipients,我看不到任何收件人。不应该email.CreateReply(true)将email.from和email.ToRecipients地址复制到responseMessage?
答案 0 :(得分:2)
这个有点令人困惑。基本上,ResponseMessage类使用ReferenceItemId元素实现EWS的CreateItem操作,该元素允许您向服务器发送最少的信息。这个想法是服务器已经拥有发送回复所需的大部分信息(如原始正文,收件人列表等),因此您无需重新发送该信息。因此,ResponseMessage不会从EmailMessage获取收件人的副本,因为它不需要它。
您需要检查原始邮件的收件人以及发件人。如果它们不包含不需要的地址,那么您不需要做任何事情。如果他们这样做,那么您将需要设置ResponseMessage.ToRecipients。如果这样做,则需要添加所有需要的地址。触摸ResponseMessage.ToRecipients会覆盖原始收件人列表。