我在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;
}
}
这有时会有效,但出于某种原因,有时回复在我的收件箱中不会显示为回复。即我的邮件客户端并不认为它是同一个会话的一部分。
我想发生的事情是,服务器上收到的最后一封电子邮件实际上并非来自我发送给的电子邮件地址,因此Exchange或我的邮件客户端都没有意识到它是即使会话ID相同,也是同一对话的一部分。
答案 0 :(得分:0)
你想用这个完成什么?你的意思是“不回复”。它是前锋,新消息还是其他什么?
根据我的理解,消息不仅必须具有相同的conversationId才能在同一个对话中,而且还具有相同的conversationTopic和合理的conversationIndex(类似于conversationId与mail-reply-history的时间戳连接在一起) )。 如果您的邮件丢失,您可以查看这两个属性的不一致。
希望有所帮助。