Extraiga el encabezado del correo y decodifique la palabra codificada MIME

Extraiga el encabezado del correo y decodifique la palabra codificada MIME

Como parte de un script, quiero tomar un archivo que contiene un correo electrónico y extraer un encabezado, por ejemplo, el encabezado del asunto. Lo siguiente casi funciona:

formail -c -x subject < FILE

Pero no decodifica encabezados codificados utilizando la sintaxis de palabras codificadas MIME (también conocida como RFC2047), por ejemplo, =?UTF-8?B?w6lsw6ltZW50?=.

¿Cuál es una buena manera de extraer el encabezado de un correo electrónico mientras nos encargamos de decodificar las partes de palabras codificadas en MIME?

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

Respuesta1

canalícelo a:

pitón)

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");'

o si está seguro de que el encabezado será =?UTF-8?B?…entonces puede hacer fácilmente:

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

Python probablemente debería ser el más universal, ya que probablemente esté en todos los sistemas de forma predeterminada e incluso el módulo de correo electrónico esté presente.

información relacionada