我正在关注MSDN上显示的示例,但我错过了一部分,因为我无法触发“事件”。
目标是每次用户打开/预览/标记为邮件项目时,在邮件末尾附加时间戳和用户名。
我读过MailItem.Open(https://msdn.microsoft.com/en-us/library/office/ff865989.aspx)和MailItem.Read(https://msdn.microsoft.com/EN-US/library/office/ff869872.aspx)。我已禁用宏安全性(启用所有宏)。
我在“ThisOutlookSession”中的代码。我每次更改内容时都会重新启动Outlook:
Public WithEvents SelectedItem As Outlook.MailItem
Sub Initialize_handler()
Set SelectedItem = Application.ActiveExplorer.CurrentFolder.Items(1)
SelectedItem.Display
End Sub
Sub SelectedItem_Read()
MsgBox "Trigger by MailItem.Read"
End Sub
Sub SelectedItem_Open()
MsgBox "Trigger by MailItem.Open"
End Sub
我无法在用户阅读的任何打开/预览3秒/标记的情况下显示msgbox。
当事件有效时,我打算调用以下子项:
Sub MessageWasOpenned()
Dim myItem As MailItem
Set SelectedItems = ActiveExplorer.Selection
For Each myItem In SelectedItems
myItem.Body = myItem.Body & vbCrLf & "This message was opened by: " & (Environ$("Username")) & " on: " & Now
myItem.Save
Next
End Sub
答案 0 :(得分:0)
您可以在文件夹中的第一个项目上设置事件处理程序,无论它是什么。很可能它将是文件夹中最旧的消息,但除非您明确对Items集合进行排序,否则不会确定顺序。该订单与您在Outlook的资源管理器中看到的内容无关。
如果您使用Selection集合,则会触发Open事件。