我正在尝试阅读 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
属性的概念,或者我只是做错了什么?
那么,如何在没有父正文的情况下获得回复电子邮件的唯一正文?
最佳答案
说明:
如文档 ( link here ) 中所定义,UniqueBody
是:
the body part that is unique to the conversation that this item is part of
这句话的主要部分是对话
的概念:它是来自您的邮箱的概念,而不是来自邮件的概念。因此,字段 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:mailA@gmail.com" target="_blank">mailA@gmail.com</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>
如您所见,我收到了原始消息和转发的评论。
然后:
- mailEWS 回复(text = "reply 1"
- mailA 回复该回复(回复文本为“来自外部地址的回复”)
因此,在使用 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
字段中)
关于c# - UniqueBody是不是很独特?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42763101/