Extraia o cabeçalho do email e decodifique a palavra codificada MIME

Extraia o cabeçalho do email e decodifique a palavra codificada MIME

Como parte de um script, quero pegar um arquivo contendo um email e extrair um cabeçalho, por exemplo, o cabeçalho do assunto. O seguinte quase funciona:

formail -c -x subject < FILE

Mas ele não decodifica cabeçalhos codificados usando a sintaxe de palavra codificada MIME (também conhecida como RFC2047), por exemplo, =?UTF-8?B?w6lsw6ltZW50?=.

Qual é uma boa maneira de extrair um cabeçalho de e-mail enquanto cuida da decodificação de partes de palavras codificadas em MIME?

Pergunta relacionada:https://stackoverflow.com/questions/39457380/retrieve-email-subject-from-file-via-bash

Responder1

canalize para:

Pitão)

formail -c -x Subject < FILE | \
python -c "from email.header import decode_header;
import sys;
text, encoding = decode_header(sys.stdin.read())[0];
print text.decode(encoding)"

php)

formail -c -x Subject < FILE | \
  php -r 'echo iconv_mime_decode(stream_get_contents(STDIN),1,"utf-8");'

ou se tiver certeza de que o cabeçalho será, =?UTF-8?B?…você pode fazer facilmente:

formail -c -x Subject < FILE | \
  awk -F '[?]' '{print $4}' | \
  openssl enc -base64 -d -A

python deve ser provavelmente o mais universal, já que provavelmente está presente em todos os sistemas por padrão e até mesmo o módulo de e-mail está presente.

informação relacionada