如何使用Microsoft Exchange Web服务从特定电子邮件中读取最新的电子邮件对话HTML正文



我正在使用EWS从收件箱的电子邮件中单独读取电子邮件正文部分。

我只需要提取回复的电子邮件正文,而不是整个电子邮件正文。

例如

************
A This is good tenant.
Regards,
Test
From:test@gmail.com
To: ----
----------
----------
Hi User, Data has been populated. Please reply with A or R with comments.
Regard
Admin.
************

所以当我阅读上述电子邮件的正文时,我会得到上面提到的整个正文。但我只需要:

************
A This is good tenant.
Regards,
Test
************

只有最新回复的电子邮件正文。

UniqueBody的这种方法适用于我:

// ensure that username, password, domain and smtpAddress are set
var service = new ExchangeService {
    PreAuthenticate = true,
    Credentials = new WebCredentials(username, password, domain),
};
service.AutodiscoverUrl(smtpAddress, redirect => true);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, smtpAddress);
var inbox = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox));
var fir = inbox.FindItems(new ItemView(10));
foreach (var ir in fir) {
    var msg = EmailMessage.Bind(service, ir.Id, new PropertySet(EmailMessageSchema.UniqueBody));
    Console.WriteLine(msg.UniqueBody.Text);
}

对于结果中的任何后续消息,msg.UniqueBody.Text属性仅包含该消息中新的部分。

请注意,可能有更好的方法可以做到这一点,但这在我的快速测试中有效(针对Exchange Online)。

最新更新