Reading inbox on a shared mailbox on office365

Welcome Forums General PowerShell Q&A Reading inbox on a shared mailbox on office365

This topic contains 1 reply, has 1 voice, and was last updated by

6 months, 3 weeks ago.

  • Author
  • #113210

    Topics: 3
    Replies: 29
    Points: 210
    Helping Hand
    Rank: Participant

    Good morning all,

    I'm trying to read the inbox of a shared mailbox.
    I found this script but cant find a way to change this to a shared mailbox because it doesn't have a login.
    I'm using my own credentials (with rights on that mailbox)

    Hope someone can point me in the right direction

    # Written by Ben Penney
    # Set the path to your copy of EWS Managed API 
    $dllpath = 'C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll' 
    # Load the Assemply 
    $null = [Reflection.Assembly]::LoadFile($dllpath) 
    # Create a new Exchange service object 
    $service = new-object -TypeName Microsoft.Exchange.WebServices.Data.ExchangeService 
    #These are your O365 credentials
    $Service.Credentials = New-Object -TypeName Microsoft.Exchange.WebServices.Data.WebCredentials -ArgumentList ($mail,$password)
    # this TestUrlCallback is purely a security check
    $TestUrlCallback = {
        param ([string] $url)
        if ($url -eq '') {$true} else {$false}
    # Autodiscover using the mail address set above
    # create Property Set to include body and header of email
    $PropertySet = New-Object -TypeName Microsoft.Exchange.WebServices.Data.PropertySet -ArgumentList ([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
    # set email body to text
    $PropertySet.RequestedBodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::Text
    # Set how many emails we want to read at a time
    $numOfEmailsToRead = 100
    # Index to keep track of where we are up to. Set to 0 initially. 
    $index = 0 
    # Do/while loop for paging through the folder 
        # Set what we want to retrieve from the folder. This will grab the first $pagesize emails
        $view = New-Object -TypeName Microsoft.Exchange.WebServices.Data.ItemView -ArgumentList ($numOfEmailsToRead,$index) 
        # Retrieve the data from the folder 
        $findResults = $service.FindItems([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$view) 
        foreach ($item in $findResults.Items)
            # load the additional properties for the item
            # Output the results
            "From: $($item.From.Name)"
            "Subject: $($item.Subject)"
            "Body: $($Item.Body.Text)"
            #"References: $($item.References)"
           # "InternetMessageID: $($item.InternetMessageID)"
           # 'InternetMessageHeaders:'
            # Display the headers - using a little foreach loop
           # $item.InternetMessageHeaders|foreach{"$($_.Name): $($_.Value)"} 
        # Increment $index to next block of emails
        $index += $numOfEmailsToRead
    } while ($findResults.MoreAvailable) # Do/While there are more emails to retrieve
  • #113215

    Topics: 3
    Replies: 29
    Points: 210
    Helping Hand
    Rank: Participant

    I solved the issue,


    You can set a password on a unlicensed shared mailbox user,

    If you use this the script works

The topic ‘Reading inbox on a shared mailbox on office365’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort