Forum Discussion
Send-MailMessage with Powershell and Exchange Online with MFA
The Send-MailMessage cmdlet is not related with Exchange Online Powershell or EXOPSSession (MFA), this is normal Powershell utility command, so you have to individually pass required parameters (ex: username and password) to this cmdlet.
The below command works fine for me even with MFA enabled account.
$username = "user@domain.com" $password = "user_password" $sstr = ConvertTo-SecureString -string $password -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential -argumentlist $username, $sstr $body = "This is a test email" Send-MailMessage -To "admin@domain.com" -from "user@domain.com" -Subject 'Test message' -Body $body -BodyAsHtml -smtpserver smtp.office365.com -usessl -Credential $cred -Port 587
If you face issue with MFA enabled account, then you can generate app password and then use an app password for that account, instead of the regular user password.
Refer this post for more details : https://techcommunity.microsoft.com/t5/Identity-Authentication/Send-Mail-SMTP-through-Office-365-with-MFA/m-p/163867
I figured out another way to do this without storing the password or creating an app password. Hopefully this helps.
$username = "email address removed for privacy reasons"
$password = Read-Host "Enter Password" -AsSecureString
$credentials = New-Object System.Management.Automation.PSCredential -argumentlist $username, $password