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