因此,我有一个添加项,可以监视已发送的项目文件夹,并在新项目到达时将电子邮件上传到天蓝色存储(如果它满足某些条件)。 我的问题是它仅适用于默认帐户发送的项目。我需要它来查看所有已发送的项目。例如,我在 Outlook 中有 3 个帐户,但它仅适用于主帐户。 这是适用于默认项目的代码:
Dim sentItems As Outlook.Items
Dim sentFolder As Outlook.Folder
Dim oApp As New Outlook.Application
sentFolder = oApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail)
sentItems = sentFolder.Items
AddHandler sentItems.ItemAdd, AddressOf itemadd
其中“itemadd”是执行上传工作的函数。
我试图让它完成所有文件夹的操作是
Dim sentfolders As List(Of Outlook.Folder)
Dim sentitemslist As List(Of Outlook.Items)
Dim oApp As New Outlook.Application
Dim accounts As Outlook.Accounts = oApp.Session.Accounts
Dim account As Outlook.Account
Dim i As Integer = 0
For Each account In accounts
sentfolders(i) = account.CurrentUser.Session.Folders(Outlook.OlDefaultFolders.olFolderSentMail) **
sentitemslist(i) = sentfolders(i).Items
AddHandler sentitemslist(i).ItemAdd, AddressOf itemadd
Next
这给了我一个“对象引用未设置为对象实例”。标有 ** 的行出现错误。 我在该线上尝试了各种其他方法但无济于事。
Folders()
采用整数索引或字符串(文件夹名称)。您正在传递 olFolderSentMail
枚举值。更重要的是,您的代码尝试在循环的每次迭代中访问相同的文件夹:CurrentUser.Session
对于所有帐户都是相同的。
您需要做的是循环遍历
oApp.Session.Stores
集合中的所有商店,并为每个商店调用 Store.GetDefaultFolder(olFolderSentMail)
。准备好处理(并忽略)异常,因为并非所有商店都有“已发送邮件”文件夹;公共文件夹或辅助 PST 存储是此类存储的两个示例。