電子メールの添付ファイルが空です。

電子メールの添付ファイルが空です。

Sendmail EMLファイルに添付ファイルを追加しようとしています。現在、emlファイル(order.eml)には次の内容があります。

From: Sender <[email protected]>
To: [email protected]
Subject: Report
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="B835649000072104Jul07"

--B835649000072104Jul07
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Body Copy

--B835649000072104Jul07
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="por5151.pdf"
base64 por5151.pdf

--B835649000072104Jul07--

order.emlファイルとpor5151.pdfファイルは両方とも同じディレクトリにあり、次のように試しました。

# /usr/sbin/sendmail -t < order.eml

電子メールが届いたら、添付ファイルにpor5151.pdfが表示されますが空です(0バイト)。なぜこのようなことが起こるのかわからず、修正しようとしています。

答え1

あなたがしなければならないことはファイルです

Content-Disposition: attachment; filename="por5151.pdf"

ファイルを生成するときは、.eml次のbase64ユーティリティを使用してこれを実行できます。

base64 por5151.pdf

閉じる境界線(--B835649000072104Jul07--)が後ろに挿入されていることを確認してください。

sendmail渡されたファイルは解釈されないため、ファイルの内容は魔法のように挿入されません.pdf

答え2

CSVファイルを追加するために、次のスクリプトを作成しました。 CSVの列名が間違って切り捨てられ、電子メールで「ATT0001.txt」という別のファイルもインポートされました。

(
echo "From:"$1;
echo "To:"$2;
echo "Subject:"$3;
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";

echo "--B835649000072104Jul07";
echo "Content-Type: text/html; charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "";
echo "$4";

echo "--B835649000072104Jul07";
echo "Content-Type: text/csv";
echo "Content-Transfer-Encoding: base64";
echo "Content-Disposition: attachment; filename=\"$5\"";
base64 "$5"

echo "--B835649000072104Jul07";
) | sendmail -t

関連情報