es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Descargar los archivos adjuntos recibidos durante los últimos 5 días en Python.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown

Soy bastante nuevo en Python. Aquí hay un código funcional que estoy usando, pero ¿cómo puedo agregar un filtro en el que solo se escaneen y descarguen los archivos adjuntos de correo electrónico de los últimos 5 días?

¡Gracias de antemano!

  import os
  from imbox import Imbox # pip install imbox
  import traceback
  import datetime

  host = "imap.gmail.com"
  username = "miemail@gmail.com"
  password = '*******'
  download_folder = "mi/directorio/existente"

  if not os.path.isdir(download_folder):
      os.makedirs(download_folder, exist_ok=True)

  mail = Imbox(host, username=username, password=password, ssl=True, ssl_context=None, starttls=False)
  # messages = mail.messages() # por defecto en la bandeja de entrada

  for (uid, message) in messages:
      mail.mark_seen(uid) # opcional, marca el mensaje como leído

      for idx, attachment in enumerate(message.attachments):
          try:
              att_fn = attachment.get('filename')
              download_path = f"{download_folder}/{att_fn}"
              print(download_path)
              with open(download_path, "wb") as fp:
                  fp.write(attachment.get('content').read())
          except:
              pass
              print(traceback.print_exc())

  mail.logout()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para filtrar solo los adjuntos de correo electrónico de los últimos 5 días, puede modificar el bucle for para incluir una verificación de la fecha de cada correo electrónico. En primer lugar, puede calcular la fecha de hace 5 días utilizando el módulo datetime:

    cinco_días_antes = (datetime.datetime.now() - datetime.timedelta(days=5)).strftime('%d-%b-%Y')
    

    Luego, puede modificar la variable messages para solo recuperar mensajes desde esa fecha:

    messages = mail.messages(date__gt=cinco_días_antes)
    

    Finalmente, puede continuar con el resto del script como antes para descargar los adjuntos de estos mensajes filtrados.

Comments are closed.