访问Outlook默认文件夹

时间:2011-05-24 02:14:49

标签: vba outlook outlook-2007

我正在开发一个Outlook VBA应用程序,我需要访问我的收件箱,但我似乎遇到了一些麻烦。我使用GetDefaultFoldder(olFolderInbox)方法,但是,我设置了多个电子邮件地址,但没有一个显示在我的个人文件夹的收件箱中。

所以我的问题是,这个默认文件夹定义在哪里?我如何知道哪个收件箱是默认收件箱?我知道还有GetFolderFromID方法,如果我要使用它,

如何找到文件夹ID才能指向它?

这是我正在使用的代码。这是来自Timothy Chen Allen博客的教程Timothy's Blog。代码:

Sub find_unread()
    On Error GoTo eh:
    Dim ns As Outlook.NameSpace
    Dim folder As MAPIFolder
    Dim item As Object
    Dim msg As MailItem

    Set ns = Session.Application.GetNamespace("MAPI")
    Set folder = ns.GetDefaultFolder(olFolderInbox)

    For Each item In folder.Items
        DoEvents
        If (item.Class = olMail) And (item.UnRead) Then
            Set msg = item
            Debug.Print msg.SenderEmailAddress
            msg.Display True
        End If
    Next

    MsgBox "All messages in Inbox are read", vbInformation, "All Read"
    Exit Sub
eh:
    MsgBox Err.Description, vbCritical, Err.Number
End Sub

1 个答案:

答案 0 :(得分:8)

您可以使用Folders属性,并将多个Folders属性串在一起,以获取命名空间中的任何文件夹。一些例子

收件箱(与GetDefaultFolder(olInbox)相同)

ns.Folders("Personal Folders").Folders("Inbox")

Inbox的子文件夹名为Backup

ns.Folders("Personal Folders").Folders("Inbox").Folders("Backup")

与个人文件夹处于同一级别的OtherInbox

ns.Folders("OtherInbox")

GetDefaultFolder适合快速访问默认文件夹,但如果您需要非默认文件夹,只需使用NameSpace对象的Folders属性向下导航树。