스크립트의 일부로 이메일이 포함된 파일을 가져와 제목 헤더와 같은 헤더를 추출하고 싶습니다. 다음은 거의 작동합니다.
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은 기본적으로 모든 시스템에 존재하고 이메일 모듈도 존재하므로 가장 보편적이어야 합니다.