¿Nos ayudas a pagar el Hosting?

Compartir en facebook Compartir en twitter Compartir en linkedin

Enviar email desde Python con SMTP propio

Publicado en febrero de 2018

Ya 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.

Nombre*

Email* Nunca será publicado ni compartido

Comentario*



Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.

OK | Más información