スクリプトの一部として電子メールを含むファイルをインポートし、件名ヘッダーなどのヘッダーを抽出したいと思います。以下はほとんど機能します。
formail -c -x subject < FILE
ただし、MIMEエンコードされた単語構文(RFC2047とも呼ばれます)を使用してエンコードされたヘッダーはデコードされません=?UTF-8?B?w6lsw6ltZW50?=
。
MIMEエンコードされた単語の部分をデコードしながらEメールヘッダーを抽出する良い方法は何ですか?
関連質問:https://stackoverflow.com/questions/39457380/retrieve-email-subject-from-file-via-bash
答え1
次にパイプしてください。
Python)
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はデフォルトですべてのシステムに存在し、電子メールモジュールも存在するため、最も一般的である必要があります。