0
我的Outlook由3个用户邮箱(缓存)和10个共享邮箱(在线)组成。如何为所有“已发送邮件”文件夹收听“ItemAdd”?
我需要捕捉这些邮箱中的邮件发送时,所以我搜索了一下,我应该听“ItemAdd”事件。
问题是,ItemAdd事件未被触发。
这里是我的测试代码:
Imports System.Runtime.InteropServices
Public Class ThisAddIn
Private sentFolders As New List(Of Outlook.Folder)
Private Sub ThisAddIn_Startup() Handles Me.Startup
Call InitSentFolders()
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Private Sub InitSentFolders()
Dim ns As Outlook.NameSpace = Application.GetNamespace("MAPI")
Dim stores As Outlook.Stores = ns.Stores
For i As Integer = 1 To stores.Count
Try
Dim store As Outlook.Store = stores(i)
Try
Dim sentFolder As Outlook.Folder = TryCast(store.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail), Outlook.Folder)
AddHandler DirectCast(sentFolder.Items, Outlook.Items).ItemAdd, AddressOf ItemAdd
sentFolders.Add(sentFolder)
Catch ex As Exception
End Try
Marshal.ReleaseComObject(store)
Catch ex As Exception
End Try
Next
Marshal.ReleaseComObject(stores)
Marshal.ReleaseComObject(ns)
End Sub
Private Sub ItemAdd(ByVal ItemObject As Object)
If TypeOf (ItemObject) Is Outlook.MailItem Then
Dim item As Outlook.MailItem = CType(ItemObject, Outlook.MailItem)
MsgBox(item.Sender.ToString)
Marshal.ReleaseComObject(item)
End If
End Sub
End Class
任何想法,为什么它没有被解雇?
感谢