Enviar correo electrónico vía Outlook y SMTP

Enviar correo electrónico vía Outlook y SMTP

El servicio de correo electrónico de Microsoft, Outlook (antes Hotmail), permite a los desarrolladores de aplicaciones enviar mensajes a través del protocolo SMTP. Los datos del servicio son los siguientes:

  • Dominio: smtp-mail.outlook.com
  • Puerto: 587
  • Protocolo de seguridad: TLS

Con esta inforomación y el auxilio de los módulos estándares email y smtplib, podemos emplear el siguiente código para enviar un correo electrónico desde una casilla de Outlook (también acepta las antiguas casillas @hotmail.com, @live.com, etc.):

from email.message import EmailMessage
import smtplib

remitente = "remitente@outlook.com"
destinatario = "destinatario@ejemplo.com"
mensaje = "¡Hola, mundo!"

email = EmailMessage()
email["From"] = remitente
email["To"] = destinatario
email["Subject"] = "Correo de prueba"
email.set_content(mensaje)

smtp = smtplib.SMTP("smtp-mail.outlook.com", port=587)
smtp.starttls()
smtp.login(remitente, "clave_de_outlook_123")
smtp.sendmail(remitente, destinatario, email.as_string())
smtp.quit()

Deberás reemplazar "remitente@outlook.com" y "clave_de_outlook_123" por las credenciales correspondientes a tu cuenta de Outlook desde la cual quieres enviar el correo electrónico.

Para una explicación general de la estructura de este código y de cómo incluir código HTML y archivos adjuntos, véase nuestro artículo sobre los módulos email y smtplib: Enviar correo electrónico en HTML y con adjuntos vía SMTP.

Curso online 👨‍💻

¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

Consultoría 💡

Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

4 comentarios.

  1. Buenas tardes:
    Al ejecutar el script desde visual studio, me da el fallo:

    No module named ‘email.message’; ‘email’ is not a package

    Sabes a que se debe tal error.

    Muchas gracias por tu ayuda.

    Saludos.

    • Recursos Python says:

      Hola. ¿Por casualidad tu archivo o carpeta se llama email? En ese caso debería tener otro nombre para evitar conflictos con la librería estándar.

      Saludos

    • Recursos Python says:

      Hola, Ivan. Lamentablemente, no hay nada que se pueda hacer en el código para evitar eso. Depende de muchos otros factores ajenos a Python.

      Saludos

Deja una respuesta