Python - SMTP

El Protocolo simple de transferencia de correo (SMTP) es un protocolo que gestiona el envío de un correo electrónico y el enrutamiento del correo electrónico entre servidores de correo.

Python proporciona smtplib módulo, que define un objeto de sesión de cliente SMTP que se puede utilizar para enviar correos a cualquier máquina de Internet con un demonio de escucha SMTP o ESMTP.

Un objeto SMTP tiene un método de instancia llamado sendmail, que normalmente se utiliza para enviar un mensaje por correo. Se necesitan tres parámetros:

  • El remitente : una cadena con la dirección del remitente.

  • Los receptores : una lista de cadenas, una para cada destinatario.

  • El mensaje : un mensaje como una cadena formateada como se especifica en las distintas RFC.

Ejemplo

A continuación, se muestra una forma sencilla de enviar un correo electrónico mediante el script Python. Pruébelo una vez -

#!/usr/bin/python3
import smtplib
sender = '[email protected]'
receivers = ['[email protected]']
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Aquí, ha colocado un correo electrónico básico en el mensaje, utilizando una comilla triple, teniendo cuidado de formatear los encabezados correctamente. Un correo electrónico requiere unFrom, Toy un Subject encabezado, separado del cuerpo del correo electrónico con una línea en blanco.

Para enviar el correo, use smtpObj para conectarse al servidor SMTP en la máquina local. Luego use el método sendmail junto con el mensaje, la dirección de remitente y la dirección de destino como parámetros (aunque las direcciones de origen y destino están dentro del correo electrónico, no siempre se usan para enrutar el correo).

Si no está ejecutando un servidor SMTP en su máquina local, puede usar el cliente smtplib para comunicarse con un servidor SMTP remoto. A menos que esté utilizando un servicio de correo web (como gmail o Yahoo! Mail), su proveedor de correo electrónico debe haberle proporcionado los detalles del servidor de correo saliente que usted puede proporcionar, de la siguiente manera:

mail = smtplib.SMTP('smtp.gmail.com', 587)

Enviar un correo electrónico HTML usando Python

Cuando envía un mensaje de texto con Python, todo el contenido se trata como texto simple. Incluso si incluye etiquetas HTML en un mensaje de texto, se muestra como texto simple y las etiquetas HTML no se formatearán de acuerdo con la sintaxis HTML. Sin embargo, Python ofrece una opción para enviar un mensaje HTML como mensaje HTML real.

Al enviar un mensaje de correo electrónico, puede especificar una versión de Mime, el tipo de contenido y el juego de caracteres para enviar un correo electrónico HTML.

Ejemplo

A continuación, se muestra un ejemplo para enviar el contenido HTML como un correo electrónico. Pruébelo una vez -

#!/usr/bin/python3
import smtplib
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"