tracking read status of email messages in exchange online

Pham Tien Dung 105 Reputation points
2024-05-09T10:19:46.3533333+00:00

Currently our organization uses an exchange hybrid cloud model.

We want to track read status of email messages of a specific sender in the system. We tested using a user in the oprem to send to users in the online exchange, however I used the Get-MessageTrace command. -Sender mail@xyz -MessageSubject "abc" -Start (Get-Date).AddHours(-48) -EventId RECEIVE | Select MessageID to get the ID of user mail@xyz but the returned result is none. While it is also the address mail@xyz sent to mails in oprem, we can still use the above command to get the user's MessageID. Please help me regarding this case

Microsoft Exchange Online
Microsoft Exchange Online Management
Microsoft Exchange Online Management
Microsoft Exchange Online: A Microsoft email and calendaring hosted service.Management: The act or process of organizing, handling, directing or controlling something.
4,590 questions
Exchange Server Development
Exchange Server Development
Exchange Server: A family of Microsoft client/server messaging and collaboration software.Development: The process of researching, productizing, and refining new or existing technologies.
549 questions
Exchange Server Management
Exchange Server Management
Exchange Server: A family of Microsoft client/server messaging and collaboration software.Management: The act or process of organizing, handling, directing or controlling something.
7,678 questions
Microsoft Exchange Hybrid Management
Microsoft Exchange Hybrid Management
Microsoft Exchange: Microsoft messaging and collaboration software.Hybrid Management: Organizing, handling, directing or controlling hybrid deployments.
2,140 questions
0 comments No comments
{count} votes

Accepted answer
  1. Noah Ma-MSFT 2,725 Reputation points Microsoft Vendor
    2024-05-10T09:23:09.35+00:00

    Hi @Pham Tien Dung,

    Thank you for posting to Microsoft Community. We are happy to help you.

     

    To confirm with you, it seems like your issue is that you cannot use the Get-MessageTraceLog command with emails that user in onprem send to user in Exchange Online since the Get-MessageTrace you mentioned didn’t have the MessageSubject parameter.

    If so, the reason why none result is returned with this command could be the command is available only in on-premises Exchange. For more information, you could refer to Get-MessageTrackingLog (ExchangePowerShell) | Microsoft Learn

    However, you could also use Get-MessageTrace command to get the emails in Exchange Online with the command below to check the MessageID, Status and Subject etc.

    Get-MessageTrace -SenderAddress mail@xyz -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) | Format-table MessageTraceId, Subject, RecipientAddress,Status

    You could refer to Get-MessageTrace (ExchangePowerShell) | Microsoft Learn for more information.

    A black screen with white text

    For reading status of email messages, no cmdlet within Exchange Online can do. Therefore, you cannot get the read status of a message by Get-MessageTrace. If you need the total numbers of read/unread messages for a period, you can find them in the Usage reports in the O365 Admin portal as below.

    User's imageIf you need those details on a per-message basis, you could refer EWS Powershell Script to find the ‘True’ Read Status of an email message | Microsoft Learn to get it from a EWS based script.

    Hope it helps. If you have anything else to get help from me, please feel free to contact me.

    1 person found this answer helpful.

2 additional answers

Sort by: Most helpful
  1. Vasil Michev 108.2K Reputation points MVP
    2024-05-09T15:48:58.0066667+00:00

    The Get-MessageTrace will not give you the read status of a message, in fact no cmdlet within Exchange Online will, now that they removed Search-Mailbox. You will have to use an EWS or Graph API based solution, for example the Get-MgUserMessage cmdlet:

    Connect-MgGraph -Scopes Mail.Read
    Get-MgUserMessage -UserId user@domain.com -Filter {sender/emailAddress/address eq 'm365dev@microsoft.com'} -Top 5 | select Subject,IsRead
    

  2. Pham Tien Dung 105 Reputation points
    2024-05-13T06:36:22.9633333+00:00

    Hi @Noah Ma-MSFT

    Thank you for your answer, I find it very practical for me

    If you need those details on a per-message basis, you could refer EWS Powershell Script to find the ‘True’ Read Status of an email message | Microsoft Learn to get it from a EWS based script. -> However, when I access the Get-ReadStatus.ps1 scripts, I cannot download them

    Is there any way you can help me?

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.