监控添加中的所有已发送项目文件夹

问题描述 投票:0回答:1

因此,我有一个添加项,可以监视已发送的项目文件夹,并在新项目到达时将电子邮件上传到天蓝色存储(如果它满足某些条件)。 我的问题是它仅适用于默认帐户发送的项目。我需要它来查看所有已发送的项目。例如,我在 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

这给了我一个“对象引用未设置为对象实例”。标有 ** 的行出现错误。 我在该线上尝试了各种其他方法但无济于事。

vb.net outlook vsto outlook-addin office-interop
1个回答
0
投票

Folders()
采用整数索引或字符串(文件夹名称)。您正在传递
olFolderSentMail
枚举值。更重要的是,您的代码尝试在循环的每次迭代中访问相同的文件夹:
CurrentUser.Session
对于所有帐户都是相同的。

您需要做的是循环遍历

oApp.Session.Stores
集合中的所有商店,并为每个商店调用
Store.GetDefaultFolder(olFolderSentMail)
。准备好处理(并忽略)异常,因为并非所有商店都有“已发送邮件”文件夹;公共文件夹或辅助 PST 存储是此类存储的两个示例。

© www.soinside.com 2019 - 2024. All rights reserved.