c# - 发送电子邮件后如何通过 EWS 获取电子邮件 ConversationId

标签 c# asp.net-mvc exchangewebservices

我想在发送电子邮件后获取电子邮件的 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 = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2c4d4e4f486c545556024f4341" rel="noreferrer noopener nofollow">[email protected]</a>";
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 的例如

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

关于c# - 发送电子邮件后如何通过 EWS 获取电子邮件 ConversationId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66999988/

相关文章:

c# - Exchange Web 服务和 C# : How to get appointments from shared calendar

asp.net-mvc - 如何在 Azure-AD 中存储用户首选项?

java - 如何编辑联系人备注

c# - 使用私钥(RSA)解密字符串

c# - 在 WPF 中多次调用 Application.Run

c# - IEnumerable——非空集合如何同时为空?

c# - 获取具有特定文件扩展名的路径的子目录

asp.net-mvc - 防止 MVC EF 应用程序中事件重叠的最佳方法是什么?

asp.net-mvc - MVC 绑定(bind)到复选框

Node.js 与 MS Exchange EWS 集成