Ola PessoALL,
Há um tempo eu escrevi um artigo sobre como enviar e-mail utilizando o Microsoft Graph, pois quando temos o security defaults todos os usuários precisam ter autenticação de 2 fatores (MFA).

Microsoft 365 - Enviando emails com Microsoft Graph e OAuth
Ola pessoALL, Uma dúvida recorrente que temos recebido é como enviar e-mails utilizando contas protegidas por MFA no Microsoft 365? Antes de irmos para a resposta e código eu queria reforçar que esse não é o método recomendado pela Microsoft, nem do ponto de vista de uso e nao do

Após pesquisar um pouco mais, acabei descobrindo que é possível habilitarmos o envio por SMTP para contas especificas, mesmo com o Security Defaults habilitado.

Conforme a documentação oficial ensina, podemos habilitar o SMTP para contas especificas.

Habilitar ou desabilitar o SMTP AUTH no Exchange Online
Resumo: uma visão geral do SMTP AUTH no Exchange Online.

Use o Centro de administração do Microsoft 365 para habilitar ou desabilitar o SMTP AUTH em caixas de correio específicas

  1. Abra o Centro de administração do Microsoft 365 e vá para usuários ativos de usuários>.
  2. Selecione o usuário e, no flyout exibido, clique em Email.
  3. Na seção aplicativos Email, clique em Gerenciar aplicativos de email.
  4. Verifique a configuração de SMTP autenticada : desmarcada = desabilitada, marcada = habilitada.
  5. Quando terminar, clique em Salvar alterações.

Para testar o envio, utilize o script a seguir:

# Sender and Recipient Info
$MailFrom = "seuemail@nomicrosoft365.com"
$MailTo = "destinatario@gmail.com"

$Username = 'seuemail@nomicrosoft365.com'
$Password = 'sua-senha-do-email'

# Server Info
$SmtpServer = "smtp.office365.com"
$SmtpPort = "587"

# Message stuff
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
$Message.IsBodyHTML = $true
$Message.Subject = "Testing Office smtp"
$Message.Body = "This is a test message"

# Construct the SMTP client object, credentials, and send
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
$Smtp.EnableSsl = $true
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
$Smtp.Send($Message)

Pronto! Com isso podemos enviar e-mails via SMTP e manter aplicações que dependem desse protocolo funcionando.

💡
Podemos te ajudar com uma revisão 100% gratuita do seu ambiente cloud.
Share this post