How to get the MailItems of a specific folder in Outlook

17.7k views Asked by At

My folder is called "Request Mailbox" in Outlook

How can I get a list of all mailitems in that folder

2

There are 2 answers

0
0m3r On

To get list of MailItems, you can simply do this

MailItem list will be displayed as Email

Option Explicit
Sub MailItems()
    Dim olNamespace As Outlook.NameSpace
    Dim olFolder  As Outlook.MAPIFolder
    Dim olItem As Outlook.MailItem

    Set olNamespace = Application.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox).Folders("Request Mailbox")

    Set olItem = Application.CreateItem(olMailItem) ' Creat EMail
    With olItem
        For Each olItem In olFolder.Items
            Debug.Print olItem.Subject ' Print to immediate window
            .body = .body & olItem.Subject & vbCrLf ' Print to Email
            Debug.Print olItem.SenderName
            .body = .body & olItem.SenderName & vbCrLf
            Debug.Print olItem.ReceivedTime
            .body = .body & olItem.ReceivedTime & vbCrLf & vbCrLf
        Next ' vbCrLf = vb: Visual Basic Cr: Carriage Return Lf: LineFeed
        .Subject = "Mail Items" ' Subject
        .Display    ' Display Msg
    End With

End Sub

For Shared Folder Try this

Option Explicit
Sub ShareMailItems()
    Dim olNamespace As Outlook.NameSpace
    Dim olShareName As Outlook.Recipient
    Dim olShareInbox As Outlook.Folder
    Dim olItem As Outlook.MailItem

    Set olNamespace = Application.GetNamespace("MAPI")
    Set olShareName = olNamespace.CreateRecipient("[email protected]") '// Owner's email address
    Set olShareInbox = olNamespace.GetSharedDefaultFolder( _
                 olShareName, olFolderInbox).Folders("Request Mailbox") '// FolderName

    Set olItem = Application.CreateItem(olMailItem) ' Creat EMail
    With olItem
        For Each olItem In olShareInbox.Items
            Debug.Print olItem.Subject ' Print to immediate window
            .body = .body & olItem.Subject & vbCrLf ' Print to Email
            Debug.Print olItem.SenderName
            .body = .body & olItem.SenderName & vbCrLf
            Debug.Print olItem.ReceivedTime
            .body = .body & olItem.ReceivedTime & vbCrLf & vbCrLf
        Next ' vbCrLf = vb: Visual Basic Cr: Carriage Return Lf: LineFeed
        .Subject = "Mail Items" ' Subject
        .Display    ' Display
    End With
End Sub
2
Dmitry Streblechenko On

For a delegate mailbox already open in Outlook, use Application.Session.Folders.("[email protected]").Folders("TheFolderName")