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