VBA Outlook事件移动电子邮件

时间:2011-11-04 13:23:10

标签: event-handling outlook outlook-vba

我搜索了一种方式来获取Outlook中移动项目/电子邮件的事件。

我们可以使用Inspector吗? 或者也许有像itemsent或newmail这样的事件处理程序?

谢谢


更多详情:

我有4个或更多邮箱。 每个都有X个文件夹和子文件夹(其中1个是一个包含数百万个文件夹的livelink框)。 有些是普通的盒子,有些人拖着普通邮件。

我希望每次在livelink框中的文件夹上移动邮件时都会抓住。

1 个答案:

答案 0 :(得分:3)

将项目添加到文件夹中的集合时会触发事件。例如,假设您在默认收件箱下方有一个名为“Stuff”的文件夹。每次将电子邮件移动到该文件夹​​时,都会触发此代码:

Private WithEvents Items As Outlook.Items

Private Sub Application_Startup()
  Dim olApp As Outlook.Application

  Set olApp = Outlook.Application
  Set Items = GetNS(olApp).GetDefaultFolder(olFolderInbox).Folders("Stuff").Items
End Sub

Private Sub Items_ItemAdd(ByVal item As Object)

  On Error GoTo ErrorHandler

  MsgBox "You moved an item into the 'Stuff' folder."

ProgramExit:
  Exit Sub
ErrorHandler:
  MsgBox Err.Number & " - " & Err.Description
  Resume ProgramExit
End Sub

Function GetNS(ByRef app As Outlook.Application) As Outlook.NameSpace
  Set GetNS = app.GetNamespace("MAPI")
End Function

将其粘贴到ThisOutlookSession并重新启动Outlook。每当电子邮件移动到该文件夹​​时,您都会看到弹出窗口。