【问题标题】:VBA - Outlook message ID - using to identify preeviously processed messagesVBA - Outlook 邮件 ID - 用于识别先前处理的邮件
【发布时间】:2014-07-10 00:44:05
【问题描述】:

如果在 Outlook 邮箱中处理邮件,是否可以使用某种 ID 来记录最后处理的邮件,从而避免每次都遍历所有邮件?

我正在尝试编写一个快速的“附件剥离器”来释放邮箱空间,并且不想在每次运行代码时都遍历邮件文件夹中的每条消息。在紧要关头,我可以使用邮件文件夹名称和邮件日期,但如果文件夹被重命名或邮件被移动,会发生什么情况? (此外,我真的很讨厌日期!!!从格式开始,而且我最近在我的工作环境中经历了随机更改的环境设置 - 一个 citrix 远程桌面 - 所以现在对这些该死的东西有一种近乎恐惧的感觉!)

我希望有某种我可以使用的邮件 ID,但在这里看不到 MAPI ID 和 Outlook 邮件 ID 都不合适(尽管我很可能是错的)。有没有办法做到这一点?

【问题讨论】:

  • 您能否使用一个名为“待处理”的文件夹,然后浏览这些邮件,当您处理完这些邮件后,将这些邮件移至“收件箱”?
  • 可能是 MailItem.EntryID?但是“当项目被移动到另一个商店时,条目 ID 会发生变化,例如,从您的收件箱移动到 Microsoft Exchange Server 公用文件夹”(msdn.microsoft.com/en-us/library/office/…),但可能不会影响您。
  • Joseph,并不像其他同事也想使用这个工具,其想法是创建一个镜像 Outlook 邮箱结构的 windows 文件夹结构。 VBlades,我查看了EntryID,但正如你所说,它会改变,这会影响所以不幸的是它不适合。看起来我将不得不记录文件夹名称和日期/时间,并将其用作基础,但需要注意的是,从一个文件夹移动到另一个文件夹的任何消息有时可能会丢失。不过还是感谢您的建议。

标签: vba email outlook


【解决方案1】:

如果您需要避免重新处理以前处理过的电子邮件,您别无选择,只能在外部记录电子邮件的唯一标识符以供以后检查,或者使用特定值标记电子邮件(例如添加类别、设置标记、添加自定义字段,设置内部字段等)以避免稍后处理它们。

【讨论】:

  • 感谢埃里克的建议。我的问题与实际处理无关,但我希望不必遍历已检查附件的电子邮件。这就是我找不到办法的地方。如果一个邮件文件夹有 1000 封电子邮件,那么在第一次通过时,需要检查所有 1000 封邮件以检查附件并“处理”是否存在附件。如果在接下来的一周内,又有 10 封电子邮件“降落”在该文件夹中,我希望能够识别这 10 封电子邮件,而无需遍历之前的 1000 封邮件。
  • 在这种情况下,您可以使用 Items.Restrict 按 ReceivedDate 过滤掉较旧或较新的电子邮件
  • 太棒了,谢谢埃里克。这听起来像我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2014-03-15
  • 2011-08-30
  • 2011-01-19
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
相关资源
最近更新 更多