Outlook “我该怎么听?”;项目添加";为了我的一切;“已发送邮件”;文件夹?
我的Outlook由3个用户邮箱(缓存)和10个共享邮箱(联机)组成 我需要捕获这两个邮箱中的邮件何时发送,所以我在谷歌上搜索,我应该收听“ItemAdd”事件 问题是,并没有触发ItemAdd事件 以下是我的测试代码:Outlook “我该怎么听?”;项目添加";为了我的一切;“已发送邮件”;文件夹?,outlook,vsto,outlook-addin,Outlook,Vsto,Outlook Addin,我的Outlook由3个用户邮箱(缓存)和10个共享邮箱(联机)组成 我需要捕获这两个邮箱中的邮件何时发送,所以我在谷歌上搜索,我应该收听“ItemAdd”事件 问题是,并没有触发ItemAdd事件 以下是我的测试代码: Imports System.Runtime.InteropServices Public Class ThisAddIn Private sentFolders As New List(Of Outlook.Folder) Private Sub Th
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
知道它为什么没有被解雇吗
谢谢对于初学者来说,这是一个普遍存在的错误 您需要在全局范围(例如,在外接程序类)声明源对象,并使其保持活动状态以获取事件。或者垃圾收集器刷堆,源对象将被销毁 在您的情况下,定义一个Outlook文件夹列表,您可以在其中保存所有引用