Извлечь заголовок письма и декодировать закодированное слово MIME

Извлечь заголовок письма и декодировать закодированное слово MIME

В рамках скрипта я хочу взять файл, содержащий электронное письмо, и извлечь заголовок, например заголовок темы. Следующее почти работает:

formail -c -x subject < FILE

Но он не декодирует заголовки, закодированные с использованием синтаксиса кодированных слов MIME (он же RFC2047), например, =?UTF-8?B?w6lsw6ltZW50?=.

Какой есть хороший способ извлечь заголовок электронного письма, одновременно декодируя части слов, закодированные в формате MIME?

Сопутствующий вопрос:https://stackoverflow.com/questions/39457380/retrieve-email-subject-from-file-via-bash

решение1

перенаправьте его на:

питон)

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

или если вы уверены, что заголовок будет, =?UTF-8?B?…то вы можете легко сделать:

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

Python, вероятно, должен быть наиболее универсальным, поскольку он есть, вероятно, во всех системах по умолчанию и даже присутствует модуль электронной почты.

Связанный контент