我正在尝试阅读HTML中的电子邮件内容。我的问题是,尽管我正在加载EmailMessageSchema.UniqueBody
,但我的 body 不是很独特。
这是我期望的解决方案:
var props = new PropertySet(BasePropertySet.IdOnly,
EmailMessageSchema.UniqueBody,
EmailMessageSchema.Subject,
EmailMessageSchema.To,
EmailMessageSchema.From
/*Futher properties if needed*/);
props.RequestedBodyType = BodyType.HTML;
var message = EmailMessage.Bind(subscription.Service, item.ItemId, props);
// Should be unique
var uniqueBody = message.UniqueBody.Text;
在调试和研究我的
uniqueBody
变量时,我可以清楚地看到这是,而不是唯一。它需要将电子邮件的整个正文放在当前电子邮件之前(因为当前电子邮件是响应,所以我不希望得到响应的电子邮件内容)。我不确定我是否了解
EmailMessageSchema.UniqueBody
属性的概念,或者我只是做错了什么?那么,如何获得回复电子邮件的唯一正文,而没有它的 parent 正文呢?
最佳答案
解释:
根据文档(link here)中的定义,UniqueBody
为:
这句话的主要部分是conversation
的概念:它是您的邮箱中的一个概念,而不是消息中的一个概念。结果,UniqueBody
字段将仅在初始消息之后为您提供消息的最新部分。
对于第一条消息,即使它包含多条消息(由于转发或回复),UniqueBody
也将包含所有内容。
样本:
我使用外部地址“mailA”将邮件从“mailB”转发到“mailEWS”,这将是我使用EWS查询电子邮件的地址。我对此转发添加了一条评论,名为“转发电子邮件示例”。
这是在“mailEWS”中获取消息时得到的信息:
<html>
<body>
<div>
<div>
<div dir="ltr">
<span dir="ltr">
Forwarded email sample
<div>
<br>
<div>
Test from MailB <<a href="mailto:[email protected]" target="_blank">[email protected]</a>>:<br>
<div style="margin:0 0 0 0.8ex;padding-left:1ex;border-left:1px solid #CCCCCC;">Dear user,<br>
<br>
Content of initial email from mailB<br>
<br>
Sincerely,<br>
Test<br>
</div>
</div>
</div>
</span>
</div>
</div>
</div>
</body>
</html>
如您所见,我收到了原始消息和转发的评论。然后:
因此,当通过EWS获取UniqueBody时,我的mailEWS邮箱中收到一条新消息:
<html>
<body>
<div>
<div>
<div dir="ltr"><span dir="ltr">Reply from external address</span></div>
<div><br>
</div>
</div>
</div>
</body>
</html>
如您所见,我仅获得对话中消息的最新部分,而不是以前的所有答复(但这些项目在Body
字段中)