Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

473
Vistas
Analice el archivo de texto de content-type=application/zip y codificación base64 en AWS SES

En Amazon SES, tengo una regla para guardar los correos electrónicos entrantes en depósitos S3. Amazon los guarda en formato MIME.

Estos correos electrónicos tienen un archivo .txt adjunto que se mostrará en el archivo MIME como content-type=text/plain , Content-Disposition=attachment ... .txt y Content-Transfer-Encoding=quoted-printable o bases64 .

Puedo analizarlo bien usando python.

Tengo un problema al decodificar el contenido del archivo adjunto .txt cuando está comprimido (es decir, content-type: applcation/zip ), como si la codificación no fuera base64 .

Mi código:

 import base64 s = unicode(base64.b64decode(attachment_content), "utf-8")

arroja el error:

 Traceback (most recent call last): File "<input>", line 796, in <module> UnicodeDecodeError: 'utf8' codec can't decode byte 0xcf in position 10: invalid continuation byte

A continuación se encuentran las primeras líneas de la cadena "base64" en attachment_content , que por cierto tiene una longitud de 53683 + "==" al final, y pensé que la longitud de una base64 debería ser un múltiplo de 4 (??). Entonces, ¿tal vez la decodificación está fallando porque la compresión está cambiando el attachment_content y necesito alguna otra operación antes/después de decodificarlo? la verdad no tengo idea..

 UEsDBBQAAAAIAM9Ah0otgkpwx5oAADMTAgAJAAAAX2NoYXQudHh0tL3bjiRJkiX23sD+g0U3iOxu REWGu8c1l2Ag8lKd0V2ZWajM3kLuC6Hubu5uFeZm3nYJL6+n4T4Ry8EOdwCSMyQXBRBLgMQ+7CP5 QPBj5gdYn0CRI6JqFxWv7hlyszursiJV1G6qonI5cmQyeT6dPp9cnCaT6Yvp5Yvz6xfJe7cp8P/k 1SbL8xfJu0OSvUvr2q3TOnFVWjxrknWZFeuk2VRlu978s19MRvNMrHneOv51SOZlGUtMLYnfp0nd ...

También intenté usar "latin-1", pero obtuve un galimatías.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El problema era que, después de la conversión, estaba lidiando con un archivo comprimido en formato, como " PK \x03 \x04 \X3C \Xa \x0c ... ", y necesitaba descomprimirlo antes de transformarlo a UTF-8 unicode .

Este código funcionó para mí:

 import email # Parse results from email received_email = email.message_from_string(email_text) for part in received_email.walk(): c_type = part.get_content_type() c_enco = part.get('Content-Transfer-Encoding') attachment_content = part.get_payload() if c_enco == 'base64': import base64 decoded_file = base64.b64decode(attachment_content) print("File decoded from base64") if c_type == "application/zip": from cStringIO import StringIO import zipfile zfp = zipfile.ZipFile(StringIO(decoded_file), "r") unzipped_list = zfp.open(zfp.namelist()[0]).readlines() decoded_file = "".join(unzipped_list) print('And un-zipped') result = unicode(decoded_file, "utf-8")
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda