将Outlook 2016消息标记为在特定文件夹上读取

时间:2018-04-16 18:04:20

标签: vba outlook outlook-vba

我在Outlook 2016上的ThisOutlookSession中有以下宏:

Private WithEvents g_OlkFolder As Outlook.Items
Private Sub Application_Startup()
   Set olNs = Application.GetNamespace("MAPI")
   Set g_OlkFolder = olNs.Folders.Item("[myaccount]").Folders.Item("enviadas").Items
End Sub
Private Sub g_OlkFolder_ItemAdd(ByVal Item As Object)
   Item.UnRead = False
   Item.Save
End Sub

代码正在运行,但适用于Inbox下的所有文件夹,包括其自身。换句话说:代码将消息标记为" enviadas"文件夹,但也在"收件箱"文件夹中。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您的事件处理程序和规则可能会发生冲突。在PST商店提供商下,当项目移动到其他文件夹时,邮件条目ID不会更改,这意味着即使邮件已经移动到其他文件夹,您的代码(或规则)也可以成功修改邮件。

此外,没有理由调用Item.Save - 设置Unread属性不要求(它不是消息的一部分)。