如何使用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
相关产品推荐
相关产品推荐

