muttと添付ファイルのエンコード

muttと添付ファイルのエンコード

したがって、ユーザーにメモを送信するように設計された単純なbashスクリプトがあります(例:仮想[Eメール保護])、ここではコメントは短いテキスト(message.txtファイルに含まれています)と添付ファイル(以下の説明に従ってgood.pdfまたはbad.pdfと呼ばれるPDFファイル)で構成されています。

スクリプト(下)からmutt(CentOS 7、公式リポジトリで利用可能なmuttバージョンは「1つのみ」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がそれらの1つ)は2つの.pdfファイルをうまく添付し、両方のPDFファイルは領収書に「読み取り可能」(空白ではありません)されています。 muttを使用する場合にのみ、bad.pdfが空白に送信されます。明らかに、PDFファイルの間には(内部的に)わずかな「違い」がありますが、それは簡単に把握または制御できるものではありません(私はさまざまなユーザーからPDFファイルを収集して生成しません)。

それでは提案がありますか?それとも、問題がどこにあるのかについての手がかりはありますか? mutt は明らかに bad.pdf の内部内容を「読んで」いるので、これにより bad.pdf が次のようになると誤って考えることになります。いいえPDFファイル(実際に)。対照的に、Thunderbird(およびOutlook、Evolution、および他の多くの「メールクライアント」)は、「空白」に設定しなくても正常に接続されます。

Base64エンコーディングを強制的に試してみる価値はありますか?それでは、「これを達成する」ためにmuttへのCLI呼び出しに何を提供する必要がありますか?

事前にありがとう...

ベストアンサー1

おすすめ記事