如何在发送电子邮件后通过 EWS 获取电子邮件 ConversationId

How to get Email ConversationId by EWS after send email

我想在发送电子邮件后获取电子邮件的 ConversationId。 我正在使用 Microsoft Exchange Web 服务包发送电子邮件。

using Microsoft.Exchange.WebServices.Data;

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.UseDefaultCredentials = false;
service.Credentials = new WebCredentials('*****', '*****');
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
service.AutodiscoverUrl(emailExist.Email, RedirectionUrlValidationCallback);

EmailMessage emailMessage = new EmailMessage(service);
emailMessage.From = "abcd@xyz.com";
emailMessage.Subject = "testing email";
emailMessage.Body = new MessageBody(BodyType.HTML, "<b>Hello</b> World");

if (!string.IsNullOrEmpty(email.To))
{
  var toArr = email.To.Split(',');
  foreach (var toAddress in toArr)
  {
    emailMessage.ToRecipients.Add(toAddress.Trim());
  }
}

// Send message and save copy by default to sentItems folder
emailMessage.SendAndSaveCopy();

在 EWS 中,发送是异步的,因此您不会取回刚刚在发送方法中发送的消息的 ID。如果您在发送之前先将消息保存为草稿,那么应该同时填充消息和 CoversationId 的 eg

            EmailMessage em = new EmailMessage(service);
            em.Subject = "Test"
            em.Save();                
            em.Load();
            Console.WriteLine(em.ConversationId.UniqueId);