Aquí está! la esperada entrega de… trabajando con GMAIL desde Python!!

Hasta ahora hemos visto cómo consultar y leer emails, y el envío de emails de texto (sin adjuntos)

Hoy veremos finalmente cómo adjuntar archivos a un email.

Como ya sabéis, es necesario configurar la cuenta GMAIL para permitir el acceso a otras aplicaciones. Si lo has hecho antes puedes saltarte este paso.

El código, adjuntando archivos a un email

Además de las conocidas:

  • import smtplib
  • from email.mime.text import MIMEText

Vamos a necesitar:

  • import os
  • from email.mime.image import MIMEImage
  • from email.mime.multipart import MIMEMultipart

El código es similar al visto anteriormente.

  1. Construimos el mensaje
  2. Conectamos al servidor
  3. Enviamos mensaje
  4. Desconectamos.
def send_gmailX(gmailsmtpsvr, gmailusr, gmailpwd, sdestino, asunto, texto, adjunto):    
    mensaje = MIMEMultipart()
    mensaje["Subject"] = asunto    
    mensaje["From"] = gmailusr
    mensaje["To"] = ', '.join(sdestino)
    
    textomensaje = MIMEText(texto)
    mensaje.attach(textomensaje)

    # aquí es donde adjuntamos el archivo:
    with open(adjunto, 'rb') as f:
        imagen = MIMEImage(f.read())
    
    imagen.add_header("Content-Disposition", "attachment", filename=os.path.basename(adjunto))
    mensaje.attach(imagen)
    # ---
    
    mail = smtplib.SMTP_SSL(gmailsmtpsvr, 465)
    mail.login(gmailusr, gmailpwd)
    mail.sendmail(gmailusr, sdestino, mensaje.as_string())
    mail.quit()

La diferencia con respecto a los emails de texto está en la construcción del mensaje.

  1. El cuerpo del mensaje se define como MIMEText
  2. Adjuntamos el cuerpo al mensaje mensaje.attach(textomensaje)
  3. Abrimos archivo en binario y cargamos contenido como MIMEImage
  4. Adjuntamos la imagen al mensaje mensaje.attach(imagen)

* Es posible seguir añadiendo tantos objetos MIME como deseemos

 

Para enviar un email solo tenemos que llamar a la función send_gmailX:

send_gmailX("smtp.gmail.com", "tucuenta@gmail.com", "contraseña", 
  ["destino1@gmail.com", "destino2@gmail.com"], "Comiendo polenta en Bérgamo", 
  "Hola! seguro que esta foto te hace sonreir...", "/home/altaruru/Imágenes/Pictures/20160123_134025.jpg")

Eso es todo, dudas y comentarios serán bien recibidos.

Saludos

 

Deja tu comentario