Det*_*ium 6 c# exchangewebservices ews-managed-api
我正在尝试用HTML阅读电子邮件的内容.我的问题是,虽然我正在加载,但我的身体并不是很独特EmailMessageSchema.UniqueBody.
这是我期望的解决方案:
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;
Run Code Online (Sandbox Code Playgroud)
在调试和调查我的uniqueBody变量时,我可以清楚地看到这不是唯一的.它需要在当前电子邮件之前收集整个电子邮件正文(因为当前的电子邮件是回复,我不希望得到回复的电子邮件内容).
我不确定我理解EmailMessageSchema.UniqueBody财产的概念,或者我只是做错了什么?
那么,如何在没有父母身体的情况下获得回复电子邮件的独特主体?
如文档(此处链接)中所定义,UniqueBody是:
该项目所属的会话所特有的正文部分
这句话的主要部分是conversation:它是来自你邮箱的概念,而不是来自消息的概念.因此,该字段UniqueBody将仅在初始消息之后为您提供消息的最新部分.
对于第一条消息,即使它包含多条消息(由于转发或回复),UniqueBody也将包含所有内容.
我使用外部地址"mailA"将邮件从"mailB"转发到"mailEWS",这将是我使用EWS查询电子邮件的地址.我在此向前添加了一条评论,名为"Forwarded email sample".
这是我在"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>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我得到了原始信息和对前锋的评论.
然后: - mailEWS回复(text ="回复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>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只在对话中获得了消息的最新部分,而不是之前的所有回复(但这些项目都在Body字段中)