You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下mailx/mpack无法发送多附件,寻求可行替代方案

Linux下发送带多附件邮件的可行方案

问题分析

你当前的mailx脚本存在两处关键错误:

  1. -d不是指定邮件正文的参数,需通过输入重定向<读取正文文件
  2. 多数mailx版本中,每个附件都需要单独用-a选项声明,不能将多个附件文件名放在同一个-a后

另外mpack本身不支持多附件,且易出现进程挂起问题,不适合多附件场景。

可行解决方案

方案1:修正mailx脚本

针对你的需求,修正后的脚本如下:

#!/bin/bash
fileName1="/tst/test.xls"
fileName2="/tst2/test1.csv"
mailBodyFile="/tmp/test.tmp"
MailTo="xyz@test.com"
TodayDate=$(date)
recordCount=$(wc -l < "${fileName1}") # 优化写法,避免无用的cat进程
mailSubject="Test ${TodayDate}"

if [[ ${recordCount} -gt 1 ]]
then
    echo -e "Test,\n\nTest123" > "${mailBodyFile}"
    # 每个附件单独用-a选项,通过<重定向读取正文
    mailx -s "${mailSubject}" -a "${fileName1}" -a "${fileName2}" "${MailTo}" < "${mailBodyFile}"
else
    echo -e "xyz" > "${mailBodyFile}"
fi

注:部分发行版的mailx为heirloom-mailx,若仍有问题,可尝试添加-S sendmail=/usr/sbin/sendmail参数指定发送后端。

方案2:使用mutt工具

mutt是专业邮件客户端,对多附件支持更稳定,先确保已安装:

# Debian/Ubuntu系统
apt-get install mutt
# RHEL/CentOS系统
yum install mutt

修改后的脚本示例:

#!/bin/bash
fileName1="/tst/test.xls"
fileName2="/tst2/test1.csv"
mailBodyFile="/tmp/test.tmp"
MailTo="xyz@test.com"
TodayDate=$(date)
recordCount=$(wc -l < "${fileName1}")
mailSubject="Test ${TodayDate}"

if [[ ${recordCount} -gt 1 ]]
then
    echo -e "Test,\n\nTest123" > "${mailBodyFile}"
    # -a 指定附件,-- 分隔收件人与附件参数,< 读取正文
    mutt -s "${mailSubject}" -a "${fileName1}" -a "${fileName2}" -- "${MailTo}" < "${mailBodyFile}"
else
    echo -e "xyz" > "${mailBodyFile}"
fi

方案3:使用uuencode结合mailx(兼容老旧系统)

如果系统没有mutt且mailx版本过旧,可通过uuencode编码附件后发送:

#!/bin/bash
fileName1="/tst/test.xls"
fileName2="/tst2/test1.csv"
MailTo="xyz@test.com"
TodayDate=$(date)
recordCount=$(wc -l < "${fileName1}")
mailSubject="Test ${TodayDate}"

if [[ ${recordCount} -gt 1 ]]
then
    (
        echo -e "Test,\n\nTest123"
        uuencode "${fileName1}" "$(basename ${fileName1})"
        uuencode "${fileName2}" "$(basename ${fileName2})"
    ) | mailx -s "${mailSubject}" "${MailTo}"
else
    echo -e "xyz" > /tmp/test.tmp
fi

内容的提问来源于stack exchange,提问作者slider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:22:26