Codigo para el envio de un correo electronico con Python a traves de Gmail (o otro servidor)

La idea es muy facil, el siguiente codigo es una muestra de como funciona en Python el envio de email a traves de la libreria smtplib. Si prefieres un video tutorial visita la siguiente URL: https://www.youtube.com/watch?v=vCFioQizM4w

El codigo completo lo puedes descargar en la siguiente URL https://github.com/al118345/envio_email

Como puedes observar, el codigo no tiene ningun misterio. En gmail_user introduces el correo electronico desde donde se enviara el email y en la linea 12 anades el password que utiliza. A continuacion en la linea 19 creamos el asunto y en la 20 el mensaje.

Para finalizar, a partir de la linea 26 establecemos la conexion con el servidor SMTP de Gmail. Un servidor SMTP es un ordenador encargado de llevar a cabo el servicio de envio de correos electronicos y permitiendo su transporte por Internet.

Si no utilizas Gmail, puedes modificar la linea 26 con la informacion de otro proveedor del servicio. Por ejemplo, el servidor SMTP de Hotmail es smtp.live.com.

Activar el envio de correos con Gmail

La configuracion por defecto de Gmail no permite enviar correos electronicos en aplicaciones como la que hemos implementado en este articulo. Para permitirlo hay que seguir los siguientes pasos.

Acceso a la cuenta de Gmail
1 Accedemos a nuestra cuenta de Google a traves de Gmail
Menú de seguridad de Gmail
2 Vamos al menu de seguridad
Activación de acceso para aplicaciones de terceros en Gmail
3 Activamos el acceso por aplicaciones de terceros

Una versión más segura para proyectos reales

El ejemplo original sirve para entender SMTP, pero en un proyecto real no conviene escribir la contraseña directamente en el código fuente. Usa variables de entorno o un gestor de secretos y, si utilizas Gmail, crea una contraseña de aplicación después de activar la verificación en dos pasos.

La clase EmailMessage también deja el código más claro porque separa asunto, remitente, destinatario y cuerpo sin construir a mano el mensaje completo.

Enviar un adjunto

Si necesitas enviar facturas, informes o PDFs generados, crea el mensaje con EmailMessage y adjunta el fichero como bytes. El código queda más legible y se evitan muchos errores de codificación.

Configuración SMTP por proveedor

  • Gmail: smtp.gmail.com, puerto SSL 465 o STARTTLS 587.
  • Outlook o Hotmail: smtp.office365.com, normalmente STARTTLS por el puerto 587.
  • Hosting propio: revisa servidor SMTP, puerto y modo de cifrado en el panel del proveedor.

Errores habituales

  • Authentication failed: revisa usuario, contraseña de aplicación y verificación en dos pasos.
  • Connection timeout: comprueba puerto, firewall y si tu hosting bloquea SMTP.
  • Acentos o caracteres especiales rotos: usa EmailMessage y contenido UTF-8.