【发布时间】:2017-03-15 21:48:20
【问题描述】:
我正在尝试将邮件从任何文件夹移动到共享收件箱的特定子文件夹。在尝试了许多不起作用的不同事情之后,我尝试遍历收件箱中的每个文件夹并检查它是否具有我要查找的名称。当我尝试移动邮件项时,我收到无法移动元素的消息。在为我发现的原因搜索了一段时间后,我的收件箱中显然不存在任何文件夹,并且 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 帐户的权限似乎有问题。如果问题要这样解决,我会更新这个帖子并关闭。
【问题讨论】:
标签: vb.net vba email outlook vsto