A cloud-based service included in Microsoft 365, delivering scalable messaging and collaboration features with simplified management and automatic updates.
Hi Andy
Thank you for reaching out to Microsoft Q&A forum
Technically, Microsoft Exchange Online provides a native solution called SimpleDisplayName that allows you to maintain detailed internal display names while presenting a different display name to external recipients. However, Exchange Online does not support modifying the From header display name using transport rules or mail flow rules. Address rewriting is not supported in Exchange Online as stated in Manage permissions for recipients in Exchange Online | Microsoft Learn
However, you can try this PowerShell approach in your current context:
Step 1: Enable UseSimpleDisplayName for External Emails
This organization-wide setting ensures that the SimpleDisplayName (if set on a mailbox) is used in the "From" header for emails sent to external recipients.
Run (authenticate as an admin):
Connect-ExchangeOnline -UserPrincipalName ******@domain.com
Set-RemoteDomain -Identity Default -UseSimpleDisplayName $true
Step 2: Bulk-Set SimpleDisplayName for All User Mailboxes
You can use the following PowerShell script to update all user mailboxes. It constructs the SimpleDisplayName as "FirstName LastName CompanyName" based on each user's attributes.
# Connect to Exchange Online if not already connected
Connect-ExchangeOnline
# Define the company name to append (replace with your actual company name)
$CompanyName = "Your Company Name"
# Get all user mailboxes
$AllUsers = Get-User -ResultSize Unlimited -Filter {RecipientType -eq 'UserMailbox'}
# Loop through each user and set SimpleDisplayName
foreach ($User in $AllUsers) {
# Construct the SimpleDisplayName (skip if FirstName or LastName is missing)
if ($User.FirstName -and $User.LastName) {
$SimpleDisplayName = $User.FirstName + " " + $User.LastName + " " + $CompanyName
Set-User -Identity $User.Identity -SimpleDisplayName $SimpleDisplayName
Write-Output "Updated $($User.Identity) with SimpleDisplayName: $SimpleDisplayName"
} else {
Write-Output "Skipped $($User.Identity): Missing FirstName or LastName"
}
}
You can try the above workaround method and kindly let me know the update in the comments section.
Best regards
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.