我正在使用 AWS SES 服务向我的客户发送电子邮件,我想知道是否有任何解决方案可以使用 SES 和 Lambda 函数将文件直接附加到我的电子邮件中。我做了一个研究,最终找到了解决方案,建议包含指向 S3 文件的链接,而不是按原样附加文件。我想附加来自 SE 的文件,该文件可以从电子邮件本身下载。不是对附件的链接或引用。
正如人们在上面的评论中提到的,没有办法通过 SES 自动从 S3 "直接"发送文件。听起来您需要编写一个执行以下步骤的 Lambda 函数:
- 将
- 文件对象从 S3 提取到内存中
- 构建带有文本正文和文件附件的多部分 MIME 消息
- 通过 SES 发送原始消息
步骤1是使用具有适当Bucket
/Key
参数的S3.getObject
的简单问题。
我不知道你使用的是哪种语言,但在 Node 中.js步骤 #2 可以使用 npm 包完成,mailcomposer
如下所示:
const mailOptions = {
from: 'no-reply@example.tld',
to: 'whoever@example.tld',
subject: 'The Subject Line',
text: 'Body of message. File is attached...nn',
attachments: [
{
filename: 'file.txt',
content: fileData,
},
],
};
const mail = mailcomposer(mailOptions);
mail.build(<callback>);
步骤 3 再次是将 SES.sendRawEmail
与 RawMessage.Data
参数设置为您在步骤 2 中构建的消息一起使用的简单问题。
Nodemailer浮现在脑海中。
这里有一个很好的中等教程,涵盖了如何做到这一点。