Enviar email desde Python con SMTP propio
Publicado en febrero de 2018Ya hemos visto en otra guía como enviar correos electrónicos desde Python con una cuenta de gmail. En este caso vamos a usar un módulo de Python con la que no necesitaremos ninguna cuenta de correo real o existente, aunque podremos añadir una cuenta desde la que se envía el email así como una dirección de respuesta.
La librería en cuestión se llama smtplib
y es un módulo de la propia librería estandar de Python que nos permitirá enviar mensajes, incluso en formato HTML.
Lo primero es tener Python instalado. Este módulo viene por defecto desde la versión 1.5.2
Ahora vía código Python, crearemos un objeto smtplib.SMTP
al que enviaremos como parámetro el host
, en este caso, usaremos localhost
, creamos el cuerpo del mensaje y lo enviamos llamando al método sendmail
. Es más fácil de lo que parece. Veamos el código. Crea un archivo con sudo nano enviarmail.py y pega el siguiente código cambiando las direcciones de correo por las tuyas:
#!/usr/bin/env python # -*- coding: utf-8 -*- # author : "javier pérez santos para orangepiweb.es" # credits : "javier pérez santos, orangepiweb.es" # copyright : "Copyright 2017, orangepiweb.es" """ ___ ____ ___ __ _ / _ \ _ __ __ _ _ __ __ _ ___| _ \(_) \ / /__| |__ ___ ___ | | | | '__/ _` | '_ \ / _` |/ _ \ |_) | |\ \ /\ / / _ \ '_ \ / _ \/ __| | |_| | | | (_| | | | | (_| | __/ __/| | \ V V / __/ |_) | __/\__ \ \___/|_| \__,_|_| |_|\__, |\___|_| |_| \_/\_/ \___|_.__(_)___||___/ |___/ Enviar email desde Python con smtplib """ import smtplib remitente = "Desde EmailRemitente <email@remitente.com>" # Cambiar email destinatario = "Nombre Email Destinatario <email@destinatario.com>" # Cambiar email asunto = "Enviando email desde Python con smtplib" mensaje = """Hola.<br/> Esta es una prueba de mensaje <b>con formato HTML</b> enviando desde <b>Python</b> """ email = """From: %s To: %s MIME-Version: 1.0 Content-type: text/html Subject: %s %s """ % (remitente, destinatario, asunto, mensaje) try: smtp = smtplib.SMTP('localhost') smtp.sendmail(remitente, destinatario, email) print "Correo enviado satisafactoriamente" except: print """Error: el mensaje no ha sido enviado."""
El código es bastante legible, si tenéis alguna pregunta, no dudéis en consultarme. Ejecutar con:
sudo python enviarmail.py
Una advertencia. La primera vez que lo probé me volvió loco porque al enviarlos a una cuenta de gmail fueron directos a la carpeta de SPAM.
Para enviar a varios destinatarios, se puede generar una lista separada por comas:
destinatarios = ['Email 1 <email@uno.com>', 'Email 2 <email@dos.com>']
Si necesitas especificar una dirección de respuesta diferente, añadimos dentro de la variable email
la cabecera Reply to:
. El código quedaría así:
email = """From: %s To: %s Reply-To: email_de_respuesta@remitente.com MIME-Version: 1.0 Content-type: text/html Subject: %s
Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.
Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.
Todos los comentarios serán validados antes de su publicación.
Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos