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

如何使用Amazon SES添加多个邮件附件?

如何在Bash脚本中通过Amazon SES添加多个附件

要添加多个附件,只需在MIME的Multipart/Mixed结构里,为每个附件新增一个独立的分界段(用你定义的boundary值,也就是这里的NextPart),最后用--NextPart--收尾即可。

修改后的代码示例(添加两个附件)

echo '{"Data": "From: '${SENDER}'\nTo: '${RECIPIENT}'\nSubject: '${SUBJECT}'\nMIME-Version: 1.0\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\n\n--NextPart\nContent-Type: text/plain\n\n'${BODY}'\n\n--NextPart\nContent-Type: text/plain;\nContent-Disposition: attachment; filename=\"attachment1.txt\"\n\n这是第一个附件的内容。\n\n--NextPart\nContent-Type: text/plain;\nContent-Disposition: attachment; filename=\"attachment2.txt\"\n\n这是第二个附件的内容。\n\n--NextPart--"
}' > "$tmp_message"

通用处理思路(适合更多附件)

如果需要动态处理多个附件文件,可以用循环拼接内容:

# 初始化邮件头部和正文部分
message_data="From: ${SENDER}\nTo: ${RECIPIENT}\nSubject: ${SUBJECT}\nMIME-Version: 1.0\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\n\n--NextPart\nContent-Type: text/plain\n\n${BODY}\n\n"

# 循环处理每个附件文件
attachments=("file1.txt" "file2.csv" "file3.log")
for file in "${attachments[@]}"; do
    # 读取文件内容(文本文件适用,二进制文件需额外做Base64编码)
    content=$(cat "$file")
    # 拼接附件段
    message_data+="--NextPart\nContent-Type: text/plain;\nContent-Disposition: attachment; filename=\"${file}\"\n\n${content}\n\n"
done

# 添加结束标记
message_data+="--NextPart--"

# 生成最终的JSON数据
echo "{\"Data\": \"${message_data}\"}" > "$tmp_message"

注意事项

  • 每个附件必须被包裹在--NextPart和下一个--NextPart(或结束标记)之间
  • Content-Type要根据附件类型调整,比如CSV用text/csv,二进制文件需加上Content-Transfer-Encoding: base64并对内容编码
  • 注意变量中的特殊字符(换行、引号),避免破坏JSON或MIME结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:56:06