【问题标题】:AWS SES + S3 : Send emails with attachment from S3AWS SES + S3:从 S3 发送带有附件的电子邮件
【发布时间】:2018-04-15 23:48:28
【问题描述】:

我正在使用 AWS SES 服务向我的客户发送电子邮件,我想知道是否有任何解决方案可以使用 SES 和 Lambda 函数将文件直接附加到我的电子邮件中。我进行了一项研究,最终找到了建议包含指向 S3 文件的链接的解决方案,而不是按原样附加文件。我想附加来自 SE 的文件,可以从电子邮件本身下载。不是对附件的链接或引用。

【问题讨论】:

  • 使用什么语言?显然有,使用任何你想使用的任何语言的电子邮件库或客户端。从 S3 读取文件,创建消息并添加附件。
  • 它不会直接来自 S3。出站没有直接的 S3 集成。您将从 S3 下载文件以嵌入电子邮件正文中作为附件。
  • 您需要为您的 Lambda 函数编写代码才能从 S3 下载文件。然后在创建 SES 将发送的电子邮件时编写代码以附加文件。

标签: amazon-web-services amazon-s3 aws-lambda amazon-ses


【解决方案1】:

正如上面 cmets 中提到的那样,无法通过 SES 从 S3 自动“直接”发送文件。听起来您需要编写一个执行以下步骤的 Lambda 函数:

  1. 从 S3 获取文件对象到内存中
  2. 使用文本正文和文件附件构建多部分 MIME 消息
  3. 通过 SES 发送原始消息

第 1 步是使用 S3.getObject 和适当的 Bucket/Key 参数的简单问题。

我不知道您使用的是哪种语言,但在 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...\n\n',
    attachments: [
        {
            filename: 'file.txt',
            content: fileData,
        },
    ],
};
const mail = mailcomposer(mailOptions);
mail.build(<callback>);

第 3 步也是一个简单的问题,即使用 SES.sendRawEmail 并将 RawMessage.Data 参数设置为您在第 2 步中构建的消息。

【讨论】:

  • 如果您指的是这个:github.com/nodemailer/mailcomposer,则不再维护。
  • 确实是这个包,学习起来很难过。对 mailcomposer 的引用仅作为特定解决方案的说明性示例。最初的问题没有指定语言,但一般方法是使用任何符合 SMTP 的库构建多部分 MIME 消息。
猜你喜欢
  • 2017-09-28
  • 2019-12-07
  • 2016-11-17
  • 2022-11-25
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
相关资源
最近更新 更多