【问题标题】:Get mailitem's completion datetime获取 mailitem 的完成日期时间
【发布时间】:2021-09-22 22:02:35
【问题描述】:

当您在 Outlook 中标记要跟进的邮件时,它会收到一个危险信号。当您再次标记它时,标志会变为勾号并显示任务完成时间。如何从 C# 应用程序中获取/设置这个时间?

我尝试使用邮件项目的TaskCompletedDate,但它只返回日期(而不是时间)。我也试图找到分配给标记消息的任务,但也没有管理。我究竟做错了什么?我应该去哪里找呢?

我使用的是 Outlook 2007 和 2010。

提前感谢您的回答。

【问题讨论】:

    标签: c# outlook


    【解决方案1】:

    我不确定您需要的实际属性,但大多数 mailitems 属性和方法都记录在 MSDN 上:

    http://msdn.microsoft.com/en-us/library/aa210946(v=office.11).aspx

    注意:请务必检查您所针对的 Outlook 版本。 2007 年以上还有其他属性。

    编辑

    根据MSDN,这个属性确实是DateTime

    http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._mailitem.taskcompleteddate.aspx

    至于为什么它只记得日期部分我无法解释。仅供参考,我相信 TaskCompleteDate 是 UTC。

    【讨论】:

    • 我已经用 Outlook 版本的信息更新了我的帖子。我已经搜索了 MailItem 成员,并且尝试了最明显的成员,但没有成功。如前所述,最接近的是TaskCompletedDate(),但它似乎只返回日期而不是时间。隐藏 FlagCompleteDate 的任何其他想法?
    • “至于为什么它只记住日期部分我无法解释” - 但它必须将时间存储在某个地方,因为 Outlook 能够显示它。
    【解决方案2】:

    我找到了解决方法。我仍然不知道 Outlook 将与给定消息相关的 taksitem 保存在哪里,但我正在使用 Outlook 表格来显示必要的数据。表格可以为我检索所需的数据,然后我从表格的单元格中检索它。

    帮助我实现这一目标的代码在这里: http://msdn.microsoft.com/en-us/library/ff184632.aspx

    存储完成日期的列(单元格)称为“标记完成日期”。它显示整个日期时间值,而不仅仅是日期。

    此方法的缺点是您仍然无法直接访问该值并且您无法设置它,只能获取它。

    【讨论】:

      【解决方案3】:

      您可以使用mailItems propertyAccessor

      获得:

      myMailItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10910040")
      

      设置(以发送日期为例):

      call myMailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10910040",myMailItem.PropertyAccessor.LocalTimeToUTC(myMailItem.SentOn))
      

      【讨论】:

      • 我想我试过了,但我认为它没有用。你测试过这个吗?
      • 是的,我测试过了。请注意,我在我的已发送文件夹上使用它。
      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多