【发布时间】:2017-09-14 06:37:51
【问题描述】:
我在 EWS 上登录的用户与其他用户之间正在进行对话。我知道对话 ID。我想向对方发送属于同一对话一部分的消息。我想确保消息具有相同的对话 ID。但是,这不是回复。我想发送一封属于同一对话的新电子邮件。我如何在 C# 中做到这一点? EmailMessage 的 ConversationId 属性是只读的。
这篇文章没有帮助: https://msdn.microsoft.com/en-us/library/office/dn610351(v=exchg.150).aspx
或者,我实际上可以从服务器的对话中获取最新的电子邮件,并使用以下代码进行回复:
var latestConversationNode = _ExchangeService.GetConversationItems(conversationId, new PropertySet { ItemSchema.Id, ItemSchema.ConversationId }, null, null, ConversationSortOrder.DateOrderDescending).ConversationNodes.FirstOrDefault();
if (latestConversationNode != null)
{
var latestEmailInConversation = latestConversationNode.Items.FirstOrDefault() as EmailMessage;
if (latestEmailInConversation != null)
{
var replyMessage = latestEmailInConversation.CreateReply(false);
replyMessage.Body = body;
replyMessage.Subject = subject;
foreach (var toRecipient in toRecipients)
{
replyMessage.ToRecipients.Add(toRecipient);
}
replyMessage.SendAndSaveCopy();
return;
}
}
这有时有效,但由于某种原因,有时回复不会在我的收件箱中显示为回复。 IE。我的邮件客户端没有将其识别为同一对话的一部分。
我猜发生的事情是服务器上收到的最后一封电子邮件实际上不是来自我发送到的电子邮件地址,因此 Exchange 或我的邮件客户端都没有意识到它是同一对话的一部分即使对话 ID 相同。
【问题讨论】:
标签: c# email exchange-server exchangewebservices