Exchange Online reporting

How to find automatic replies in Exchange Online

List mailboxes with automatic replies on or scheduled with Exchange Online PowerShell, check 1 mailbox in the admin centre, or run Altivane's Automatic Replies report.

By the Published Updated

To find automatic replies in Exchange Online, read each mailbox's settings with Get-MailboxAutoReplyConfiguration and keep the mailboxes whose AutoReplyState is Enabled or Scheduled. The cmdlet reads 1 mailbox per call, so a large tenant takes a while. A scheduled reply stays Scheduled after its end time has passed, even though it no longer sends.

Choose the method that fits the job
MethodBest fit
PowerShellA tenant-wide CSV of mailboxes with automatic replies on or scheduled.
Admin centreA quick look at 1 person's or 1 shared mailbox's settings.
AltivaneRecommended for regular reviews, with replies that need attention marked.

Before you start

Use an account in the Organization Management or Recipient Management role group. Every Exchange Online mailbox has automatic replies available, so no extra licence is required. The examples read and export data; they do not change any mailbox settings.

Know what the settings mean. A reply is on when AutoReplyState is Enabled, and on a schedule when it is Scheduled: a scheduled reply is sent only between its StartTime and EndTime. The script makes 1 call per mailbox, so a large tenant takes a while to read, and the admin centres show 1 mailbox at a time.

Option 1

Find automatic replies with PowerShell

Install the module once, then connect and export the mailboxes with replies on or scheduled. The script goes through every mailbox and checks the reply settings of each one.

PowerShell
# Install once, if the module is not already installed.
Install-Module ExchangeOnlineManagement -Scope CurrentUser
PowerShell
$ErrorActionPreference = 'Stop'
Connect-ExchangeOnline -ShowBanner:$false
try {
    $allMailboxes = Get-EXOMailbox -ResultSize Unlimited
    $replies = @()
    foreach ($mailbox in $allMailboxes) {
        $config = Get-MailboxAutoReplyConfiguration -Identity $mailbox.UserPrincipalName
        if ($config -and $config.AutoReplyState -ne 'Disabled') {
            $sendingNow = $false
            if ($config.AutoReplyState -eq 'Enabled') {
                $sendingNow = $true
            } elseif ($config.AutoReplyState -eq 'Scheduled') {
                $now = Get-Date
                $sendingNow = ($config.StartTime -lt $now) -and ($config.EndTime -gt $now)
            }
            $replies += [PSCustomObject]@{
                DisplayName = $mailbox.DisplayName
                PrimarySmtpAddress = $mailbox.PrimarySmtpAddress
                RecipientTypeDetails = $mailbox.RecipientTypeDetails
                AutoReplyState = $config.AutoReplyState
                SendingNow = $sendingNow
                StartTime = $config.StartTime
                EndTime = $config.EndTime
                ExternalAudience = $config.ExternalAudience
            }
        }
    }
    if ($replies.Count -eq 0) {
        Write-Output 'No mailboxes found with automatic replies turned on or scheduled.'
    } else {
        $replies | Export-Csv -Path './automatic-replies.csv' -NoTypeInformation -Encoding utf8
        Write-Output "$($replies.Count) mailboxes with automatic replies found."
    }
} finally {
    Disconnect-ExchangeOnline -Confirm:$false
}

The script keeps mailboxes whose AutoReplyState is not Disabled and works out SendingNow from the schedule. Add -RecipientTypeDetails UserMailbox to Get-EXOMailbox to read only people's mailboxes, which leaves out shared and resource mailboxes and finishes sooner. The messages themselves are left out of the CSV; read them for 1 mailbox as shown below.

Check a single mailbox

Reconnect with Connect-ExchangeOnline, then read 1 mailbox's settings. The main export above disconnects when it finishes.

PowerShell
# Run while connected to Exchange Online. Replace the example address.
Get-MailboxAutoReplyConfiguration -Identity 'person@example.com' |
    Select-Object AutoReplyState, StartTime, EndTime, ExternalAudience,
        InternalMessage, ExternalMessage

AutoReplyState is Enabled, Disabled or Scheduled. ExternalAudience says whether senders outside the organisation get a reply: None for nobody, Known for senders in the person's contacts, or All for everyone. The messages are stored as HTML.

Option 2

Check automatic replies in the admin centre

  1. Sign in to the Microsoft 365 admin centre for the correct tenant.
  2. Go to Users > Active users.
  3. Select the person, then go to Mail > Automatic replies.
  4. For a shared mailbox, go to Teams & groups > Shared mailboxes, select the mailbox, then Automatic replies.
  5. Or, in the Exchange admin centre, go to Recipients > Mailboxes, select the mailbox, then Others > Automatic replies > Manage automatic replies.
  6. Read the settings. Close the pane without saving changes.

This suits a quick look at 1 mailbox, such as when someone asks why they received an out of office reply. Neither admin centre lists every mailbox with automatic replies turned on, so for a list you can keep and compare, use PowerShell or a report.

Common questions

Why does a scheduled reply show in the list but send nothing?

A scheduled reply is sent only while the current time is between its StartTime and EndTime. Once the end time passes, the state stays Scheduled but nothing is sent, which is why the script adds SendingNow.

Do shared mailboxes have automatic replies too?

Yes. A shared mailbox has its own automatic replies, and both the script and the report include shared mailboxes. To check whether people can sign in to a shared mailbox directly, see how to check shared mailbox sign-in.

Why is the external message blank for some mailboxes?

The reply was set with a message for people inside the organisation only. That is usual when ExternalAudience is None, since no one outside receives a reply. Where it is Known or All and the external message is blank, check the setting with the person.

Microsoft references

Technical references checked on 20 October 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.

Talk to us about Altivane

Questions, or pricing? Get in touch.

Contact us