En este capítulo continuamos viendo las distintas opciones que nos ofrece Python para enviar emails, ya vimos en el capítulo anterior como hacerlos a través del SMTP de Gmail gracias al módulo smtplib y como ir conformando las cabeceras a través de las clases y funciones que proporciona el módulo email.
En esta ocasión veremos como adjuntar archivos al envío de emails, para ello utilizaremos el mismo script gmail.py del capítulo anterior. Para poder hacerlo tendremos que incluir la clase MIMEBase y la función encode_base64 para incluir correctamente en la cabecera del email los argumentos para adjuntar el archivo.
También nos apoyaremos del módulos os, a través, de os.path.isfile(path) para comprobar si existe el archivo adjuntado y de os.path.basename(path) para obtener el nombre del archivo.
Códido del capítulo del vídeo tutorial ...
#IMPORTANTE: codificar el script en UTF-8 para poder utilizar vocales acentuadas, etc, ... 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 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: ") archivo = input("Adjuntar archivo: ") #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) 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 gmail.sendmail(remitente, destinatario, header.as_string()) #Cerrar la conexión SMTP gmail.quit()
No hay comentarios:
Publicar un comentario