miércoles, 1 de octubre de 2014

Tutorial de Python parte 25 - Módulo smtplib. Enviar email con Hotmail




En esta ocasión veremos como enviar emails a través del SMTP de Hotmail que es smtp.live.com y puerto 25, las modificaciones respecto al script gmail.py de los dos capítulos anteriores Módulo smtplib. Enviar email con Gmail y Enviar email con archivo adjunto es básicamente esta, por lo demás el programa de envío funciona igual, salvo que en esta ocasión utilizaremos cuentas de correo de hotmail para el envío de los emails.

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


#IMPORTANTE codificar el script en UTF-8
import smtplib, getpass, os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.encoders import encode_base64

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

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

#Host y puerto SMTP de Hotmail
hotmail = smtplib.SMTP('smtp.live.com', 25)

#protocolo de cifrado de datos utilizado por Hotmail
hotmail.starttls()

#Credenciales
hotmail.login(user, password)

#muestra la depuración de la operacion de envío 1=true
hotmail.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)

if (os.path.isfile(archivo)):
 adjunto = MIMEBase('application', 'octet-stream')
 adjunto.set_payload(open(archivo, "rb").read())
 encode_base64(adjunto)
 adjunto.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(archivo))
 header.attach(adjunto)

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

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