lunes, 29 de septiembre de 2014

Tutorial de Python parte 23 - Módulo smtplib. Enviar email con Gmail




En este capítulo continuamos viendo más módulos que nos proporciona Python y en concreto utilizaremos el módulo smtplib que nos permitirá enviar emails a través de la vía SMTP, este módulo estará apoyado por algunas funciones del módulo email como MIMEMultipart y MIMEText, respecto a la creación de las cabeceras del email, tales como el content-type que para el ejemplo utilizaremos text/html para el mensaje, así como otros argumentos como Subject (asunto), From (remitente) o To (destinatario).

En la siguiente página puedes obtener más información sobre las cabeceras de email ... http://en.wikipedia.org/wiki/Email

En el ejemplo del capítulo del vídeo tutorial creamos un programa el cual será configurado para poder enviar emails a través del SMTP de Gmail, el programa solicitará las credenciales user y password de Gmail del usuario y también para agregar a las cabeceras del email: el remitente (From), el destinatario (To), el asunto (Subject) y el mensaje html (content-type:text/html).

El código del capítulo del vídeo tutorial es el siguiente ...

import smtplib, getpass
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

print("**** Enviar email con Gmail ****")
user = input("Cuenta de gmail: ")
password = getpass.getpass("Password: ")

#Para las cabeceras del email
remitente = input("From, ejemplo: administrador <admin@gmail.com>: ")
destinatario = input("To, ejemplo: amigo <amigo@mail.com>: ")
asunto = input("Subject, Asunto del mensaje: ")
mensaje = input("Mensaje HTML: ")

#Host y puerto SMTP de Gmail
gmail = smtplib.SMTP('smtp.gmail.com', 587)

#protocolo de cifrado de datos utilizado por gmail
gmail.starttls()

#Credenciales
gmail.login(user, password)

#muestra la depuración de la operacion de envío 1=true
gmail.set_debuglevel(1)

header = MIMEMultipart()
header['Subject'] = asunto
header['From'] = remitente
header['To'] = destinatario

mensaje = MIMEText(mensaje, 'html') #Content-type:text/html
header.attach(mensaje)

#Enviar email
gmail.sendmail(remitente, destinatario, header.as_string())

#Cerrar la conexión SMTP
gmail.quit()