したがって、ユーザーにメモを送信するように設計された単純な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呼び出しに何を提供する必要がありますか?
事前にありがとう...