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
ため、マイレージが異なる場合があります。