Tengo problemas de autenticacion para enviar un mail con smtp y oath2

FEDERICO MARQUES DE PAIVA 0 Puntos de reputación
2025-05-05T18:50:21.3933333+00:00

hola hay un paso a paso sencillo para activar el envio por SMTP con oath2 ?

Sin supervisión
Sin supervisión
Etiqueta no supervisada por Microsoft.
230 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Anónimas
    2025-05-07T12:35:19.9266667+00:00

    Saludos, espero te sirva esta información para el problema de autenticación para enviar un mail, la información la construí con ayuda de inteligencia artificial Copilot:

    Sí, aquí tienes un paso a paso para activar el envío de correos por SMTP con OAuth2 en Microsoft 365:

    1. Registrar la aplicación en Microsoft Entra ID

    • Ve a Microsoft Entra ID y crea una nueva aplicación.
    • Configura los permisos de API:
      • SMTP.Sendhttps://outlook.office.com/SMTP.Send
      • offline_access (para tokens de actualización)

    2. Obtener un token de acceso

    • Usa MSAL o un flujo de autorización OAuth2 para obtener un token de acceso.
    • Puedes probar con Postman o un script en PowerShell:
      
           $tenantId = "TU_TENANT_ID"
      
           $clientId = "TU_CLIENT_ID"
      
           $clientSecret = "TU_CLIENT_SECRET"
      
           $resource = "https://outlook.office365.com"
      
           $tokenUrl = "https://login.microsoftonline.com/$tenantId/oauth2/token"
      
           $body = @{
      
               grant_type    = "client_credentials"
      
               client_id     = $clientId
      
               client_secret = $clientSecret
      
               resource      = $resource
      
           }
      
           $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenUrl -Body $body
      
           $accessToken = $tokenResponse.access_token
      
      

    3. Configurar SMTP con OAuth2

    • Usa el token de acceso en tu cliente SMTP:
      
           import smtplib
      
           smtp_server = "smtp.office365.com"
      
           smtp_port = 587
      
           access_token = "TU_ACCESS_TOKEN"
      
           server = smtplib.SMTP(smtp_server, smtp_port)
      
           server.starttls()
      
           server.docmd("AUTH XOAUTH2", access_token)
      
           server.sendmail("******@empresa.com", "******@correo.com", "Subject: Prueba\n\nEste es un correo de prueba.")
      
           server.quit()
      
      

    4. Verificar configuración en Exchange Online

    • Asegúrate de que SMTP AUTH esté habilitado en Exchange Online.
    • Si está deshabilitado, actívalo con:
      
           Set-TransportConfig -SmtpClientAuthenticationDisabled $false
      
      

    Si necesitas más detalles, revisa esta guía sobre autenticación SMTP con OAuth2. ¡Espero que esto te ayude a configurar el envío de correos correctamente! 🚀

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.