我正在尝试使用以下功能通过 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
还定义了二进制传输编码,但它是可选的,并且并非所有邮件服务器都支持它。