
作為腳本的一部分,我想獲取包含電子郵件的文件並提取標題,例如主題標題。以下幾乎有效:
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
透過管道將其傳輸到:
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 應該是最通用的,因為預設情況下它可能存在於所有系統中,甚至電子郵件模組也存在。