se termina la descarga de los adjuntos y solo se deja los mails con adjuntos pdf y xml

This commit is contained in:
George committed 2026-06-01 18:05:44 -05:00
1 parent 0855948192
commit 937c4d6260
4 files changed
+68 -31

No files matched your search

+35 -12
View File
@@ -42,7 +42,7 @@ def descargar_correos(outlook_token, fecha_inicio, fecha_fin):
########################################################
def descargar_adjuntos_de_correos(outlook_token, emails, ruta_descarga):
try:
emails_con_adjuntos = []
for email in emails:
# Guardar lista original para el log
adjuntos = outlook_utilities.download_attachments(
@@ -51,15 +51,31 @@ def descargar_adjuntos_de_correos(outlook_token, emails, ruta_descarga):
outlook_token,
ruta_descarga)
if adjuntos:
email['adjuntos'] = adjuntos
email['adjuntos'] = adjuntos
emails_con_adjuntos.append(email)
return emails
return emails_con_adjuntos
except Exception as ex:
print(f" ❌ Error procesando {email['id'][:10]}: {ex}")
return []
########################################################
def dejar_mail_si_tiene_adjunto_pdf_o_xml(emails):
"""
Recorre los adjuntos de cada email y elimina los que no tengan extensión pdf o xml
actualiza la lista de adjuntos del correo
si el mail no tiene pdf ni xml también se elimina
"""
emails_con_pdf_o_xml = []
for email in emails:
adjuntos_validos = [adjunto for adjunto in email['adjuntos'] if adjunto.lower().endswith(('.pdf', '.xml'))]
if adjuntos_validos:
email['adjuntos'] = adjuntos_validos
emails_con_pdf_o_xml.append(email)
return emails_con_pdf_o_xml
########################################################
def main():
@@ -83,27 +99,34 @@ def main():
# se verifica si estos correos ya estan en la base de datos
# si ya esta registrado, se quita del listado
# si no esta se inserta en la base de datos
emails = email_utilities.quitar_correos_ya_registrados_en_base_de_datos(emails)
# descargar todos los adjuntos de cada mail
# descargar adjuntos de cada correo y agregar
emails = descargar_adjuntos_de_correos(outlook_token, emails, CONFIG.client.ruta_descarga)
# with open("correos_con_adjuntos.json", "w", encoding="utf-8") as f:
# json.dump(emails, f, ensure_ascii=False, indent=4)
# si el correo tiene archivos zip, se descomprimen y se agregan a
# la lista de archivos adjuntos
emails = email_utilities.descomprimir_adjuntos(emails, CONFIG.client.ruta_descarga)
# se eliminan mails que no tengan adjunto pdf o xml
# también se eliminar los adjuntos no que sean xml y pdf
emails = dejar_mail_si_tiene_adjunto_pdf_o_xml(emails)
# se evalua los adjuntos del correo:
# 1. se quita de la lista el correo si no tiene adjunto
# 2. se quita de la lista el correo si no tiene
for e in emails:
print(f"\n📬 [{e['fecha']}] {e['subject'][:80]}...")
archivos_adjuntos = descargar_adjunto_de_correo(outlook_token, e['id'], CONFIG.client.ruta_descarga)
#adjuntos originales
print(f" ├── 📂 Adjuntos originales:")
for idx, a in enumerate(e['adjuntos']):
prefijo = " │ └── " if idx == len(e['adjuntos'])-1 else " │ ├── "
print(f"{prefijo}{a}")
########################################################
if __name__ == "__main__":