使用Exchange EWS的C#服务:从新创建的回复中读取收件人

时间:2015-01-21 08:52:56

标签: c# email exchange-server exchangewebservices

从传入的电子邮件创建“回复所有人”后,我需要删除不允许收到此回复的收件人。但在创建回复邮件后,回复邮件的收件人列表(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?

1 个答案:

答案 0 :(得分:2)

这个有点令人困惑。基本上,ResponseMessage类使用ReferenceItemId元素实现EWS的CreateItem操作,该元素允许您向服务器发送最少的信息。这个想法是服务器已经拥有发送回复所需的大部分信息(如原始正文,收件人列表等),因此您无需重新发送该信息。因此,ResponseMessage不会从EmailMessage获取收件人的副本,因为它不需要它。

您需要检查原始邮件的收件人以及发件人。如果它们不包含不需要的地址,那么您不需要做任何事情。如果他们这样做,那么您将需要设置ResponseMessage.ToRecipients。如果这样做,则需要添加所有需要的地址。触摸ResponseMessage.ToRecipients会覆盖原始收件人列表。