postfix sendmail 发送带附件zip的邮件,收到的附件是是空的

把cmp_result.csv,cmp_result2.csv,cmp_result3.csv三个文件打成zip包,zip包名是KKAJPS1M_cmp_result.csv.zip,然后添付到邮件发送,
现在邮件是收到了。但是收到的是一个空的添付文件。

img


是sendmail 命令不对吗,应该怎么发送呢。我在另一台Linux上同样的写法是好使,可能另一台Linux上的版本要低一些,很久很久以前就安装了postfix。现在这台是去年才构筑的。
好使的机器的的postfix的版本是
postconf mail_version
mail_version = 2.10.1

不好使的机器的的postfix的版本是
postconf mail_version
mail_version = 3.3.1


HOBUN_FILE_TEMP=${UNYO_LOG_DIR}/${SYS_DATE}/${JOB_NAME}_${BASHPID}_${SYS_DATE}_${SYS_HMSN}_honbun.txt
TMP_FILE=${UNYO_LOG_DIR}/${SYS_DATE}/${JOB_NAME}_${BASHPID}_${SYS_DATE}_${SYS_HMSN}_temp1.txt
TMP_FILE2=${UNYO_LOG_DIR}/${SYS_DATE}/${JOB_NAME}_${BASHPID}_${SYS_DATE}_${SYS_HMSN}_temp2.txt

CBL_PARAM_TO="test6@co.jp"
CBL_PARAM_FROM="test6@co.jp"
CBL_PARAM_SUBJECT="/work/iyec/KKCM.SUBJECT"
CBL_PARAM_FILE="/work/iyec/KKCM.PARAM"
PARAM_RC="ALARM"
CBL_PARAM_ATTACH1="/work/iyec/cmp_result.csv"
CBL_PARAM_ZIP="KKAJPS1M_cmp_result.csv"
CBL_PARAM_ZIP_DIR="/work/iyec"
CBL_PARAM_ATTACH2="/work/iyec/cmp_result2.csv"
CBL_PARAM_ATTACH3="/work/iyec/cmp_result3.csv"

if  [ ${CBL_PARAM_FILE} ]
    then cat ${CBL_PARAM_FILE} >> ${TMP_FILE}
fi

cat ${CBL_PARAM_ATTACH1} >> ${TMP_FILE2}
cat ${CBL_PARAM_ATTACH2} >> ${TMP_FILE2}
cat ${CBL_PARAM_ATTACH3} >> ${TMP_FILE2}

       cp  /dev/null $HOBUN_FILE_TEMP
        echo "From: ${CBL_PARAM_FROM}" > $HOBUN_FILE_TEMP
        echo "To :${CBL_PARAM_TO}" >> $HOBUN_FILE_TEMP
        echo "Subject :`echo "${MAIL_SUBJECT} ${SYS_DATE}" | iconv -f UTF-8 -t ISO-2022-JP | base64 -w0 | xargs printf '=?iso-2022-jp?B?%s?='`" >> $HOBUN_FILE_TEMP
        echo "MIME-Version: 1.0" >> $HOBUN_FILE_TEMP
        echo "Content-type: multipart/mixed; boundary=${MAIL_BOUNDARY}" >> $HOBUN_FILE_TEMP
        echo "Content-Transfer-Encoding: 7bit" >> $HOBUN_FILE_TEMP
        echo "--${MAIL_BOUNDARY}" >> $HOBUN_FILE_TEMP
        echo "Content-Type: text/plain; charset=ISO-2022-JP-2" >> $HOBUN_FILE_TEMP
        echo "Content-Transfer-Encoding: 7bit" >> $HOBUN_FILE_TEMP
        echo "" >> $HOBUN_FILE_TEMP
        cat ${TMP_FILE} | tr -d "\015" | iconv -f UTF-8 -t ISO-2022-JP-2 >> $HOBUN_FILE_TEMP
        echo "" >> $HOBUN_FILE_TEMP
        echo "--${MAIL_BOUNDARY}" >> $HOBUN_FILE_TEMP
        echo "Content-type: application/zip;" >> $HOBUN_FILE_TEMP
        echo " name=${CBL_PARAM_ZIP}.zip" >> $HOBUN_FILE_TEMP
        echo "Content-Transfer-Encoding: base64" >> $HOBUN_FILE_TEMP
        echo "Content-Disposition : attachment;" >> $HOBUN_FILE_TEMP
        echo "filename=${CBL_PARAM_ZIP_DIR}/${CBL_PARAM_ZIP}.zip" >> $HOBUN_FILE_TEMP
        echo "" >> $HOBUN_FILE_TEMP
        cat ${CBL_PARAM_ZIP_DIR}/${CBL_PARAM_ZIP}.zip | base64 >> $HOBUN_FILE_TEMP
        echo "--${MAIL_BOUNDARY}--" >> $HOBUN_FILE_TEMP
        sendmail -v -i ${CBL_PARAM_TO} < $HOBUN_FILE_TEMP

filename前面加上一个半角空格就可以了

参考:

如果使用 Postfix 和 sendmail 发送带附件的邮件,而收到的附件是空的,请检查以下几个可能的原因和解决方法:

1.文件路径错误:请确保附件文件(cmpresult.csv、cmpresult2.csv、cmp_result3.csv)的路径是正确的,以确保程序可以找到这些文件。你可以使用绝对路径或相对路径。
2.文件权限问题:请确保附件文件具有适当的访问权限,以允许 sendmail 进程读取这些文件。确保文件权限设置为可读,并确保附件文件所在的目录对 sendmail 进程具有适当的权限。
3.检查附件打包的方法:你提到将三个文件打包成了一个 ZIP 文件。请确保使用正确的方法和工具来打包文件。你可以尝试手动使用 ZIP 工具创建 ZIP 文件并验证其中是否包含了正确的文件。
4.文件传输问题:如果附件文件过大,可能在发送过程中出现网络传输问题。请确保网络连接稳定,并检查邮件服务器的日志以查看是否有任何错误或警告消息。
5.检查邮件发送的方法:请确保邮件发送的代码或脚本正确设置邮件附件并携带正确的 MIME 类型。确保使用正确的语法和参数将 ZIP 文件附加到邮件,并设置正确的 MIME 类型(例如:application/zip)。