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:경계 정의가 다른 두 항목이 있으며, 이들 사이의 경계 문자열은 본문의 별도 MIME 부분에만 속합니다. MIME 메시지를 작성하는 방법에 대한 심층적인 정보나 튜토리얼을 찾아보는 것이 좋습니다.
  • 본질적으로 동일한 정보를 텍스트로 한 번, CSV 파일로 한 번 표현하는 경우에는 를 사용하는 것이 가장 좋으multipart/alternative 므로 마일리지가 달라질 수 있습니다.

관련 정보