CSVファイルとプレーンテキスト本文を含むSendmail

CSVファイルとプレーンテキスト本文を含むSendmail

CSV file次のシェルスクリプトを使用して添付ファイルを含む電子メールを送信し、利用可能なデータをテキストファイルとして印刷しようとします。Email bodyただし、添付ファイルのみを受信して​​次のスクリプトを実行した後、受信した電子メールには電子メールの本文はありません。誰でもこの問題を解決するのに役立ちますか?

スクリプトの実行:

sh <script_name> CSV File 2012 

コード-1:

#!/bin/bash
export MAILTO="[email protected]"
export SUBJECT="Test - \"$1\""
export BODY="$2.txt"
export ATTACH_CSV=""$2"_"$3".csv"
csv_file=$( basename "$ATTACH_CSV" )
{
echo "To: $MAILTO"
echo "Subject: $SUBJECT"
echo "Content-Type: multipart/mixed; boundary=\"FILEBOUNDARY\""
echo "--FILEBOUNDARY"
echo "Content-Type: multipart/mixed; boundary=\"MSGBOUNDARY\""
echo "--MSGBOUNDARY"
echo "Content-Type: text/html; charset=iso-8859-1"
echo "Content-Transfer-Encoding: 8bit"
#echo "Content-Disposition: inline"
cat "$BODY"
echo "--MSGBOUNDARY--"
echo "--FILEBOUNDARY"
echo "Content-Type: text/csv"
echo "Content-Disposition: attachment; filename=\"${csv_file}\""
echo "Content-Transfer-Encoding: uuencode"
uuencode "$ATTACH_CSV" "$csv_file"
echo "--FILEBOUNDARY--"
} | sendmail -t

コード-2:

#!/bin/bash
export MAILTO="[email protected]"
export SUBJECT="Test - \"$1\""
export BODY="$2.txt"
export ATTACH_CSV=""$2"_"$3".csv"
csv_file=$( basename "$ATTACH_CSV" )
{
        echo "To: $MAILTO"
        echo "Subject: $SUBJECT"
        echo "Content-Type: multipart/mixed; boundary=\"FILEBOUNDARY\""

        echo "--FILEBOUNDARY"
        echo "Content-Type: multipart/alternative; boundary=\"MSGBOUNDARY\""

        echo "--MSGBOUNDARY"
        echo "Content-Type: text/plain; charset=iso-8859-1"
        echo "Content-Transfer-Encoding: 8bit"
        echo "Content-Disposition: inline"
        cat "$BODY"
        echo "--MSGBOUNDARY--"

        echo "--FILEBOUNDARY"
        echo "Content-Type: text/csv"
        echo "Content-Disposition: attachment; filename=\"${csv_file}\""
        echo "Content-Transfer-Encoding: uuencode"
        uuencode "$ATTACH_CSV" "$csv_file"
        echo "--FILEBOUNDARY--"
} | /usr/sbin/sendmail -t

答え1

  • 間違ったメッセージを書いています。メッセージヘッダーと本文の間には常に空行が必要です。ヘッダーにはContent-Type:境界定義が異なる2つの項目があり、それらの間の境界文字列は本文の別々のMIME部分にのみ属します。 MIMEメッセージを作成する方法に関する詳細な情報やチュートリアルを探すことをお勧めします。
  • 本質的に同じ情報をテキストで一度、CSVファイルで一度表現する場合は を使用するのが最善であるmultipart/alternativeため、マイレージが異なる場合があります。

関連情報