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

使用Curl发送邮件时,能否在email.txt中加入变量?

如何在Curl发送邮件时使用动态变量(如日期、用户信息)

当然可以实现动态内容,直接在静态email.txt里写变量不会被解析,得通过Bash的命令替换或动态生成内容的方式来实现,下面是几种实用方案:

方案1:用Here-Document直接生成邮件内容(无需单独文件)

直接在curl命令里嵌入动态内容,Bash会自动解析变量和命令输出:

curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt to@example.com <<EOF
From: John <me@example.com>
To: Joe <to@example.com>
Subject: Example email
Date: $(date -R)

当前登录用户信息:
$(who)

Welcome to this example email.
EOF
  • $(date -R)生成符合邮件标准的RFC 2822格式日期,避免手动填写的格式问题
  • $(who)直接插入who命令的输出内容

方案2:动态生成临时邮件文件

先生成带动态内容的email.txt,再用curl发送:

# 生成含变量的邮件文件
cat > email.txt <<EOF
From: John <me@example.com>
To: Joe <to@example.com>
Subject: Example email
Date: $(date -R)

当前操作用户:$(whoami)
完整登录会话:
$(who)

Welcome to this example email.
EOF

# 发送邮件
curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt to@example.com --upload-file email.txt

# 可选:发送完成后删除临时文件
rm email.txt

方案3:通过管道传递动态内容(无文件生成)

用printf格式化内容并通过管道传给curl,无需生成实体文件:

printf "From: John <me@example.com>\nTo: Joe <to@example.com>\nSubject: Example email\nDate: %s\n\n当前用户:%s\n\nWelcome to this example email.\n" "$(date -R)" "$(whoami)" | curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt to@example.com --upload-file -
  • --upload-file -表示从标准输入读取邮件内容

注意事项

  • 务必使用date -R生成日期,这是邮件服务器认可的标准格式
  • 命令替换$(...)会直接执行命令并替换为输出,确保命令在当前Bash环境中可正常运行
  • 如果内容包含特殊字符(空格、换行等),要用双引号包裹变量或命令替换,避免解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:55:29