VSTO Outlook:找不到共享收件箱的子文件夹
VSTO Outlook: Cannot find subfolders of shared inbox
我正在尝试将邮件从任何文件夹移动到共享收件箱的一个非常特定的子文件夹。在尝试了许多不起作用的不同方法后,我尝试遍历收件箱中的每个文件夹,并检查它是否具有我要查找的名称。当我尝试移动 mailitem 时,我收到无法移动该元素的消息。在对我发现的原因进行了更长的搜索之后,显然我的收件箱内不存在任何文件夹,并且 for each 循环退出而不检查单个条目。那么我应该如何访问我只知道名称的特定子文件夹?
相关代码:
Private Const destFolder = "myfoldername"
Public Function MoveMail()
SelectedItems = Globals.ThisAddIn.Application.ActiveExplorer.Selection
For Each Item In SelectedItems
Call MoveSelectedMail(Item)
Next Item
End Function
Function MoveSelectedMail(Item As Outlook.MailItem)
Item.Move(GetFolderToMove(destFolder))
End Function
Function GetFolderToMove(ByVal FolderName As String) As Outlook.Folder
Dim NS As Outlook.NameSpace
Dim objOwner As Outlook.Recipient
NS = Globals.ThisAddIn.Application.GetNamespace("MAPI")
objOwner = NS.CreateRecipient("NameofSharedMailbox")
objOwner.Resolve()
If objOwner.Resolved Then
Dim inbox As Outlook.Folder
inbox = NS.GetSharedDefaultFolder(objOwner, OlDefaultFolders.olFolderInbox)
For Each folder As Outlook.Folder In inbox.Folders
MsgBox(folder.Name)
If folder.Name = FolderName Then
Return folder
End If
Next folder
End If
End Function
这是我在 VBA 中使用的代码,但当我开始尝试做与 VSTO 插件相同的事情时没有用:
Function GetFolderToMove(ByVal FolderPath As String) As Outlook.Folder
Dim NS As Outlook.NameSpace
Dim objOwner As Outlook.Recipient
Set NS = Application.GetNamespace("MAPI")
Set objOwner = NS.CreateRecipient("NameofSharedMailbox")
objOwner.Resolve
If objOwner.Resolved Then
Set GetFolderPath = NS.GetSharedDefaultFolder(objOwner, olFolderInbox).Folders(destFolder)
End If
End Function
我尝试但没有帮助我解决这个问题的方法:
- 尝试仅返回共享收件箱,这成功了,但是,收件箱不是我要将邮件移动到的文件夹。
简而言之:我正在尝试将邮件移动到共享收件箱的子文件夹,但根据错误消息似乎没有子文件夹。
希望你能帮助我。
编辑:
我的问题可能有点不合适,因为我的 outlook 帐户的权限似乎有问题。如果问题将以这种方式解决,我将更新此线程并关闭 ist。
我解决了 - 我不完全确定这到底是怎么发生的,但这肯定与我拥有的权限有关。
我正在尝试将邮件从任何文件夹移动到共享收件箱的一个非常特定的子文件夹。在尝试了许多不起作用的不同方法后,我尝试遍历收件箱中的每个文件夹,并检查它是否具有我要查找的名称。当我尝试移动 mailitem 时,我收到无法移动该元素的消息。在对我发现的原因进行了更长的搜索之后,显然我的收件箱内不存在任何文件夹,并且 for each 循环退出而不检查单个条目。那么我应该如何访问我只知道名称的特定子文件夹?
相关代码:
Private Const destFolder = "myfoldername"
Public Function MoveMail()
SelectedItems = Globals.ThisAddIn.Application.ActiveExplorer.Selection
For Each Item In SelectedItems
Call MoveSelectedMail(Item)
Next Item
End Function
Function MoveSelectedMail(Item As Outlook.MailItem)
Item.Move(GetFolderToMove(destFolder))
End Function
Function GetFolderToMove(ByVal FolderName As String) As Outlook.Folder
Dim NS As Outlook.NameSpace
Dim objOwner As Outlook.Recipient
NS = Globals.ThisAddIn.Application.GetNamespace("MAPI")
objOwner = NS.CreateRecipient("NameofSharedMailbox")
objOwner.Resolve()
If objOwner.Resolved Then
Dim inbox As Outlook.Folder
inbox = NS.GetSharedDefaultFolder(objOwner, OlDefaultFolders.olFolderInbox)
For Each folder As Outlook.Folder In inbox.Folders
MsgBox(folder.Name)
If folder.Name = FolderName Then
Return folder
End If
Next folder
End If
End Function
这是我在 VBA 中使用的代码,但当我开始尝试做与 VSTO 插件相同的事情时没有用:
Function GetFolderToMove(ByVal FolderPath As String) As Outlook.Folder
Dim NS As Outlook.NameSpace
Dim objOwner As Outlook.Recipient
Set NS = Application.GetNamespace("MAPI")
Set objOwner = NS.CreateRecipient("NameofSharedMailbox")
objOwner.Resolve
If objOwner.Resolved Then
Set GetFolderPath = NS.GetSharedDefaultFolder(objOwner, olFolderInbox).Folders(destFolder)
End If
End Function
我尝试但没有帮助我解决这个问题的方法:
- 尝试仅返回共享收件箱,这成功了,但是,收件箱不是我要将邮件移动到的文件夹。
简而言之:我正在尝试将邮件移动到共享收件箱的子文件夹,但根据错误消息似乎没有子文件夹。
希望你能帮助我。
编辑: 我的问题可能有点不合适,因为我的 outlook 帐户的权限似乎有问题。如果问题将以这种方式解决,我将更新此线程并关闭 ist。
我解决了 - 我不完全确定这到底是怎么发生的,但这肯定与我拥有的权限有关。