VSTO Outlook:无法找到共享收件箱的子文件夹

时间:2016-11-02 14:25:04

标签: vb.net vba email outlook vsto

我正在尝试将邮件从任何文件夹移动到共享收件箱的非常具体的子文件夹。在尝试了许多不起作用的不同之后,我试图遍历收件箱中的每个文件夹并检查它是否具有我正在寻找的名称。当我尝试移动mailitem时,我收到无法移动元素的消息。在我找到的原因搜索了一点之后,显然我的收件箱中没有文件夹,并且每个循环退出而不检查单个条目。那么我该如何访问一个特定的子文件夹,我只知道它的名字?

相关代码:

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 addin执行相同操作时无效:

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。

1 个答案:

答案 0 :(得分:0)

我解决了 - 我不完全确定这是怎么发生的,但它肯定与我拥有的权限有关。

相关问题