
Als Teil eines Skripts möchte ich eine Datei mit einer E-Mail nehmen und einen Header extrahieren, z. B. den Betreff. Folgendes funktioniert fast:
formail -c -x subject < FILE
Es dekodiert jedoch keine Header, die mit der MIME-Syntax für codierte Wörter (auch bekannt als RFC2047) kodiert sind, z. B. =?UTF-8?B?w6lsw6ltZW50?=
.
Was ist eine gute Möglichkeit, einen E-Mail-Header zu extrahieren und gleichzeitig die Dekodierung von MIME-codierten Wortteilen zu berücksichtigen?
Verwandte Frage:https://stackoverflow.com/questions/39457380/retrieve-email-subject-from-file-via-bash
Antwort1
Leiten Sie es weiter an:
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");'
oder wenn Sie sicher sind, dass die Kopfzeile so aussehen wird =?UTF-8?B?…
, können Sie ganz einfach Folgendes tun:
formail -c -x Subject < FILE | \
awk -F '[?]' '{print $4}' | \
openssl enc -base64 -d -A
Python dürfte wohl am universellsten sein, da es vermutlich in allen Systemen standardmäßig vorhanden ist und sogar das E-Mail-Modul vorhanden ist.