【问题标题】:Marking an email message as read using Exchange Web Services 2007使用 Exchange Web Services 2007 将电子邮件标记为已读
【发布时间】:2011-10-14 07:43:07
【问题描述】:

我使用 Exchange Web Services 2007 订阅了一个电子邮件帐户,并在收到新电子邮件时处理附件。我想在处理完这些电子邮件后在服务器上将它们标记为“已读”,但我发现它并不像将“IsRead”属性设置为true那么简单。我什至尝试过以下方法:

Dim msg As EmailMessage
msg.Load(New PropertySet({EmailMessageSchema.IsRead}))
msg.IsRead = True

我在发现如果我想与消息的某些部分(如附件)交互时必须加载特定的架构属性后尝试了这个。我还尝试将消息直接绑定到新对象并加载其他属性:

Dim iID as ItemId = msg.Id
Dim tmpMsg as EmailMessage = EmailMessage.Bind(service, iID, New PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.IsRead))
tmpMsg.IsRead = True

我运气不好。我搜索了一下,发现one MSDN blog example 似乎应该可以工作,但是他有一些我似乎找不到的类(比如Microsoft.Exchange.WebServices.SetItemFieldType 类;我在WebServices 命名空间中得到的所有内容都是Data 和 AutoDiscover 命名空间,没有类或任何东西)。而且由于我找不到这些课程或任何类似的东西,我有点卡住了。他还列出了一个 DAV 示例,但同样,他的代码使用了我在我的 EWS dll 版本(即 14.0.0.0)中找不到的类。我尝试从 Microsoft 下载最新的 API,但它似乎与我已有的版本相同。

所以我的问题是,有没有办法使用 Exchange 2007 Web 服务将项目标记为已读?

【问题讨论】:

    标签: .net exchangewebservices


    【解决方案1】:

    您需要调用 tmpMsg.Update 方法将更改持久化回服务器。

    【讨论】:

      【解决方案2】:

      EmailMessage.Update() 必须在使用 EmailMessage.Move() 之前调用,因为这会创建一个具有新 id 的新项目并删除原始项目。

      【讨论】:

      • 我认为这是一个答案,但对于我用谷歌搜索到这里的问题,而不是提出的问题。因此,希望将其作为评论包含在内。这个和其他答案之间的区别是提到它必须在其他常见操作之前使用,其他地方没有提到(comment on this answer 除外)
      • 感谢您解释差异(请原谅我缺乏实际的技术洞察力)。如果您edit 将其放入答案正文并可以“弯曲”答案以回答顶部的问题(同时仍提供相同的信息),那么我认为我们有一个有用的答案贡献。 (抱歉,我仍然不会投票,但我想那些有技术理解的人可能会投票。)玩得开心,祝你好运。
      猜你喜欢
      • 2013-06-07
      • 2017-12-15
      • 2023-02-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多