c# - UniqueBody是不是很独特?

标签 c# exchangewebservices ews-managed-api

我正在尝试阅读 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 &lt;<a href="mailto:mailA@gmail.com" target="_blank">mailA@gmail.com</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 字段中)

关于c# - UniqueBody是不是很独特?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42763101/

相关文章:

c# - 如何使 NUnit 中的 TestFixtureSetup 失败

c# - 就内部/本地/匿名类而言,Java 和 C# 之间的根本区别是什么?

c# - 如何: Social Media Website

ios - EWS GetStreamingEvents。仅通过超时收到响应

c# - 如何检查谁在 C# 中使用某个端口?

c# - Exchange EWS Api - 按类别获取日历约会

c# - EWS 搜索过滤器查找发件人域 C#

exchange-server - 交换 : Is it possible to search for a custom Extended Property across all mailboxes?

c# - EWS 托管 API 和 SQL Server - 登录失败。登录来自不受信任的域,不能与 Windows 身份验证一起使用

c# - 无法通过 Exchange Server 2013 中的 EWS 加载 MimeContent