Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

470
Visualizações
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.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

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")
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda