MicrosoftMicrosoft Office 365Microsoft TeamsPowershell

Master Exchange Online Email Tracking with Microsoft Graph & PowerShell: A Comprehensive Guide


Ensuring timely email delivery and diagnosing potential issues within Exchange Online is crucial for smooth communication and compliance. PowerShell, in conjunction with the Microsoft Graph API, provides powerful tools to track email delivery status, offering detailed insights and customization.


  • Understanding of Exchange Online mail flow concepts
  • Familiarity with PowerShell scripting
  • Microsoft Graph Permissions:
    • Mail.Read (at a minimum)
    • Potentially Reports.Read.All for more in-depth reporting
  • App Registration in Azure AD (for PowerShell script authentication)

Finding the Message-ID

The Message-ID uniquely identifies each email. Here’s how to locate it:

  • Outlook:

    1. Open the email.
    2. Go to File -> Properties.
    3. Locate “Internet headers” and find the Message-ID.
  • Outlook on the Web:

    1. Open the email.
    2. Click the three dots (…) and select View message details.
    3. Locate the Message-ID.
Recommended For You:  Create Bootable USB From ISO using Powershell

Tracking Email Delivery with PowerShell & Microsoft Graph

1. Install Modules:

Install-Module -Name Microsoft.Graph

2. Connect to Graph API:

Connect-MgGraph -Scopes Mail.Read, Reports.Read.All # Adjust scopes as needed


1: Track a Specific Message:

$messageId = "<insert Message-ID here>"
Get-MgMessageTrace -MessageId $messageId

2: Recent Messages From a Specific Sender:

$sender = ""
$startTime = (Get-Date).AddHours(-12) # Past 12 hours
Get-MgMessageTrace -Sender $sender -StartDate $startTime

3: Failed Deliveries for Troubleshooting:

$yesterday = (Get-Date).AddDays(-1)
Get-MgMessageTrace -StartDate $yesterday |
    Where-Object { $_.Status -eq "Failed" } |
    Select-Object Sender, Recipients, Subject, Status, FailureDetail

Real-World Applications

  • Troubleshooting Delays: Identify bottlenecks and pinpoint the cause of delayed emails.
  • Delivery Confirmation: Verify if critical emails reached their intended recipients.
  • Compliance Reporting: Demonstrate adherence to regulations or internal policies with delivery status reports.

Let me know if you would like to explore advanced reporting, automation, or integration with other monitoring tools!

Muhammad Faizan

Hi, My name is Muhammad Faizan and i have spent last 15 years working as System Administrator mainly with Microsoft Technologies. I am MCSE, MCTP, MCITP, certified professional. I love scripting and Powershell is the scripting language i am in love with.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Check Also
Back to top button