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

Linux服务器Bash脚本邮件:添加附件及含时间的自定义正文方法

解决方案:在Bash脚本中独立控制邮件正文与附件

核心思路很简单:Perl脚本只负责输出.bin文件,我们不需要碰它,只需要修改Bash里的邮件发送逻辑,自己拼接自定义消息和当前时间作为邮件正文,再带上附件发送。

方法1:用系统自带的mailx(或mail)命令

大多数Linux发行版默认预装了mailx(部分系统叫mail),这是最省事的方案:

  1. 先在Bash脚本里定义自定义消息和获取当前时间:
# 自定义消息,你可以随便改内容
CUSTOM_MESSAGE="您好,这是本次任务生成的二进制结果文件,请查收。"
# 获取格式化的当前时间(格式可以自己调整,比如改成%Y/%m/%d %H:%M)
CURRENT_DATE=$(date "+%Y-%m-%d %H:%M:%S")
  1. 调用Perl脚本生成.bin文件(保持你原来的命令不变):
# 假设Perl脚本直接把输出写入output.bin,或者你可以把stdout重定向到文件
./your_perl_script.pl > output.bin
  1. 拼接正文并发送邮件:
# 用echo -e解析换行符,让正文排版更清晰
echo -e "${CUSTOM_MESSAGE}\n\n文件生成时间:${CURRENT_DATE}" | mailx -s "任务结果通知" -a output.bin 收件人邮箱@xxx.com

注意事项

  • 有些系统的mail命令参数略有不同,比如如果-a不生效,可以试试把附件放在收件人后面:mailx -s "主题" 收件人邮箱@xxx.com -a output.bin
  • 如果需要抄送,可以加-c 抄送邮箱@xxx.com参数

方法2:用功能更强的mutt命令

如果你的服务器装了mutt(没装的话用apt install mutt或yum install mutt安装),它的邮件格式控制更灵活:

# 同样定义变量
CUSTOM_MESSAGE="您好,这是本次任务生成的二进制结果文件,请查收。"
CURRENT_DATE=$(date "+%Y-%m-%d %H:%M:%S")

# 生成.bin文件
./your_perl_script.pl > output.bin

# 发送邮件,注意--是用来分隔附件和收件人的,避免邮箱地址被识别成附件
echo -e "${CUSTOM_MESSAGE}\n\n文件生成时间:${CURRENT_DATE}" | mutt -s "任务结果通知" -a output.bin -- 收件人邮箱@xxx.com

为什么不需要修改Perl脚本?

因为Perl的职责只是生成你需要的.bin文件,邮件的内容(正文、主题、附件关联)完全是Bash脚本的工作——你只需要让Bash先调用Perl拿到文件,再自己构造邮件的所有其他部分就行,两者完全独立,不需要碰Perl的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:23:54