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

时间:2014-09-01 10:14:28

标签: c# asp.net email exchangewebservices

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

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

e.g。

************
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
************

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

1 个答案:

答案 0 :(得分:2)

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)。