mutt 및 첨부 파일 인코딩

mutt 및 첨부 파일 인코딩

그래서 사용자에게 메모를 보내도록 설계된 간단한 bash 스크립트가 있습니다(예: 가상의[이메일 보호됨]), 여기서 주석은 짧은 텍스트(message.txt 파일에 포함됨)와 첨부 파일(아래 설명에 따라 good.pdf 또는 bad.pdf라고 부르는 PDF 파일)로 구성됩니다.

스크립트(아래)에서 mutt(CentOS 7, 공식 저장소에서 사용 가능한 mutt 버전은 "만" 1.5.21임)에 대한 호출은 잘 작동합니다(good.pdf의 경우)...

 /usr/bin/mutt -s "here is the file..." [email protected] -a  good.pdf < message.txt

...특정 PDF 파일(bad.pdf)을 제외하고 첨부 파일을 열려고 하면(메일 클라이언트에서 또는 이메일에서 처음 분리한 후 PDF 리더를 사용하여) 첨부 파일이 비어 있습니다.

good.pdf 및 bad.pdf는 내가 소유한 많은 PDF 리더 중 어느 것에서나 잘 렌더링됩니다("합법적인" PDF 파일임을 나타냄). 이메일 클라이언트(예: Thunderbird)를 사용하여 good.pdf 또는 bad.pdf를 첨부하면 두 첨부 파일 모두 정상적으로 처리됩니다(둘 다 비어 있지 않음).

그러나 bad.pdf가 비어 있는 것으로 나타납니다.만약에나는 mutt(적어도 CentOS 7에서 실행할 수 있는 mutt 버전)를 사용하여 첨부 파일로 보내려고 했습니다.

mutt가 올바르게 보낸 good.pdf의 이메일 헤더 중 일부를 보면 다음과 같습니다.

 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline

 Here is the text piped in from message.txt

 Content-Type: application/octet-stream
 Content-Disposition: attachment; filename="good.pdf"
 Content-Transfer-Encoding: base64 

따라서 good.pdf 파일은 Base64로 인코딩됩니다.

그러나 bad.pdf 파일("공백"이 될 예정임)의 경우 다음과 같은 결과를 얻습니다.

 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline

 Here is the text piped in from message.txt

 Content-Type: text/plain; charset=utf-8
 Content-Disposition: attachment; filename="bad.pdf"
 Content-Transfer-Encoding: quoted-printable

그래서 어떤 이유로 mutt는 bad.pdf의 콘텐츠 유형이 text/plain(application/octet-stream 대신)이라고 생각합니다. 이것이 바로 Content-Transfer-Encoding에 quoted-printable(application/octet-stream 대신)을 사용하는 이유라고 생각됩니다. 스트림 base64)).

마찬가지로 내 PDF 리더는 모두 good.pdf와 bad.pdf를 잘 엽니다. 또한 내 모든 이메일 클라이언트(Thunderbird가 그 중 하나)는 두 개의 .pdf 파일을 잘 첨부하고 두 PDF 파일 모두 영수증에 "읽기 가능"(공백 아님)되어 있습니다. mutt를 사용할 때만 bad.pdf가 공백으로 전송됩니다. 분명히 PDF 파일 사이에는 (내부적으로) 약간의 "차이"가 있지만 쉽게 파악하거나 제어할 수 있는 것이 아닙니다(저는 다양한 사용자로부터 PDF 파일을 수집하고 생성하지 않습니다).

그럼 제안사항이 있나요? 아니면 문제가 어디에 있는지에 대한 단서가 있습니까? mutt는 분명히 bad.pdf의 내부 내용을 "읽고" 있는데, 이로 인해 bad.pdf가 다음과 같다고 (잘못) 생각하게 됩니다.아니요PDF 파일 (실제로). 대조적으로, Thunderbird(및 Outlook, Evolution 및 기타 많은 "메일 클라이언트")는 "공백"으로 설정하지 않고도 정상적으로 연결됩니다.

Base64 인코딩을 강제로 시도해 볼 가치가 있나요? 그렇다면 "이것을 달성"하기 위해 mutt에 대한 CLI 호출에 무엇을 제공해야 합니까?

미리 감사드립니다...

관련 정보