2025 年 4 月 4 日,Amazon Simple Email Service (SES) 推出了通过 SES v2 API 的 简单发送类型(Simple) 向电子邮件添加附件的支持。
客户可以将 PDF 文档等附件添加到电子邮件中,或包含用于在电子邮件内容中内联呈现的图像,而无需下载图像。
以下是使用简单发送类型(Simple)发送附件的详细步骤。
假设你有一个名为 document.pdf 的 PDF 文件,并希望生成一个名为 request-send-email.json 的 SES 邮件发送请求文件。
第 1 步:准备模板 JSON 文件
创建一个 JSON 模板文件(request-template.json),内容如下:
{
"FromEmailAddress": "sender@example.com",
"Destination": {
"ToAddresses": [
"recipient@example.com"
]
},
"Content": {
"Simple": {
"Subject": {
"Data": "Email with attachment"
},
"Body": {
"Text": {
"Data": "Please see attached document."
}
},
"Attachments": [
{
"RawContent": "",
"ContentDisposition": "ATTACHMENT",
"FileName": "document.pdf",
"ContentDescription": "PDF Document Attachment",
"ContentTransferEncoding": "BASE64"
}
]
}
}
}
第 2 步:生成最终 JSON 文件
方法 1:手动将附件转换为 Base64 编码
-
使用以下命令将 PDF 文件转换为 Base64 编码:
base64 -w 0 document.pdf > pdf-encoded.txt
-
查看编码内容:
cat pdf-encoded.txt
-
手动编辑 request-send-email.json,将 Base64 编码内容复制到 "RawContent": "<base64-encoded-content>" 字段。
vim request-send-email.json
方法 2:使用脚本自动嵌入 Base64 编码
由于 PDF 或图片的 Base64 编码较长,手动复制可能出错,建议使用脚本自动化处理:
-
安装 jq 工具(若未安装):
sudo yum install -y jq
-
将 PDF 文件转换为 Base64 编码,并嵌入 JSON 文件:
CONTENT=$(base64 -w 0 document.pdf)
jq --arg content "$CONTENT" '.Content.Simple.Attachments[0].RawContent = $content' request-template.json > request-send-email.json
第 3 步:使用 AWS CLI 发送邮件
使用 AWS CLI 命令发送包含附件的邮件:
aws sesv2 send-email --cli-input-json file://request-send-email.json
处理 JPG 文件附件
对于 JPG 文件,流程与 PDF 文件相同,仅需修改文件名和描述。例如,在 JSON 文件中更新以下字段:
"FileName": "image.jpg",
"ContentDescription": "JPG Image Attachment"
Base64 编码处理命令保持不变:
CONTENT=$(base64 -w 0 image.jpg)
jq --arg content "$CONTENT" '.Content.Simple.Attachments[0].RawContent = $content' request-template.json > request-send-email.json
结论
借助 SES v2 API 的“简单”发送类型,用户现在可以轻松发送带附件的电子邮件。这项增强功能显著提升了 SES 的灵活性,使其成为需要文档或图像传送场景的理想选择。无论您选择手动操作还是脚本自动化,发送带附件的电子邮件现在都变得高效而简单。
参考文献
- Amazon SES 新功能公告
- AWS SES 附件功能文档