我正在尝试阅读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 &lt;<a href="mailto:[email protected]" target="_blank">[email protected]</a>&gt;:<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字段中)

    09-17 02:24