다음 기능을 사용하여 sendmail을 통해 zip 파일이 첨부된 이메일을 보내려고 합니다. csv 파일에서는 제대로 작동하지만 동일한 csv의 zip 형식이 손상되었습니다. 미리 감사드립니다.
mailUsers()
{
(
echo "From: ${mailfrom}"
echo "To: ${mailto}"
echo "Cc: ${mailcc}"
echo "Subject: ${EMAILSUB}"
echo "Mime-Version: 1.0"
echo 'Content-Type: multipart/mixed; boundary="GvXjxJ+pjyke8COw"'
echo "Content-Disposition: inline"
echo ""
echo "--GvXjxJ+pjyke8COw"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $outputBodyFile | sed -e "s%@SUMMARY@%`tr '\\n' ' ' < $sqlplusOutput`%"
echo "--GvXjxJ+pjyke8COw"
echo "Content-Disposition: attachment; filename=$FILENAME"
echo ""
cat $FILENAME
) | /usr/lib/sendmail -t
LogMessage $logFile "Mail Sent..."
}
답변1
zip 파일은 바이너리 파일이고 csv 파일은 그렇지 않습니다. 이메일은 바이너리 파일에서 작동하지 않습니다.
헤더를 추가 Content-Transfer-Encoding: base64
하고 Base64를 사용하여 zip 파일을 인코딩합니다. 따라서 첨부 줄을 다음으로 변경하십시오.
echo "--GvXjxJ+pjyke8COw"
echo "Content-Disposition: attachment; filename=$FILENAME"
echo "Content-Transfer-Encoding: base64"
echo ""
base64 $FILENAME
바이너리 전송 인코딩도 정의되어 있지만 선택 사항이며 모든 메일 서버가 이를 지원하는 것은 아닙니다.