当前位置: 首页 > 知识库问答 >
问题:

如何使用SES服务在lambda nodeJs中发送带有附件的邮件

查飞星
2023-03-14

我正试图发送一封带有附件的邮件。我已经使用SES服务发送简单和超文本标记语言的内容邮件。但是现在我想发送带有附件的邮件。

我正在使用亚马逊SES服务发送电子邮件,我正在使用sendRawEmail方法发送带有附件的邮件。

我收到这样的错误消息<代码>InvalidParameterValue:嵌套组

我没有找到任何此类错误的节点示例。

共有1个答案

夹谷腾
2023-03-14

我有一个非常令人沮丧的时间试图用NodeJS SES API发送电子邮件。我发现了这个问题,我修复了使用mail作曲家npm包。现在我可以发送带有附件的邮件了。

安装AWS SDK

npm i aws-sdk

现在安装manil作曲家

npm i mailcomposer

完整代码如下

请求正文:如果要发送带有Base64内容的邮件。

{
  email: ['jen****@gmail.com', 'Aa****@gmail.com'],
  from: 'no-reply@*****.com',
  subject: 'Sending emails with attachments',
  text: 'please find attachments',
  attachments: [{
    filename: 'sample.pdf',
    content: {{file}}, // file content base64 staring
    encoding: 'base64',
  }]
}

如果要发送带有文件路径的邮件。

{
      email: ['jen****@gmail.com', 'Aa****@gmail.com'],
      from: 'no-reply@*****.com',
      subject: 'Sending emails with attachments',
      text: 'please find attachments',
      attachments: [{
        filename: 'sample.pdf',
        path: './home/sample,pdf'
      }]
    }

业务逻辑代码:

const ses = new AWS.SES({ region: 'us-east-1' }); //specify region for the particular see service.

const mailcomposer = require('mailcomposer');

exports.handler = function (event, context) {
  console.log('Event: ',JSON.stringify(event));

  if (!event.email) {
    context.fail('Missing argument: email');
    return;
  }

  if (!event.subject) {
    context.fail('Missing argument: subject');
  }

  if (!event.from) {
    context.fail('Missing argument: from');
  }

  if (!event.html && !event.text) {
    context.fail('Missing argument: html|text');
  }

  const to = event.email;
  const from = event.from;
  const subject = event.subject;
  const htmlBody = event.html; 
  const textBody = event.text;
  const attachments = event.attachments;

  const mailOptions = {
    from: from,
    subject: subject,
    text: textBody,
    html: htmlBody,
    to: to,
    attachments: attachments ? attachments : []
  };

  const mail = mailcomposer(mailOptions);

  mail.build(function (err, message) {
    const req = ses.sendRawEmail({ RawMessage: { Data: message } });

    req.on('build', function () {
      req.httpRequest.headers['Force-headers'] = '1';
    });

    req.send(function (err, data) {
      if (err) {
        console.log(err, err.stack);
        context.fail('Internal Error: The email could not be sent.');
      } else {
        console.log(message);
        console.log('The email was successfully sent')
        context.succeed('The email was successfully sent');
      }
    });
  });
};

if you have and any query regarding mailcomposer then check [here][1] this link below

  [1]: https://nodemailer.com/extras/mailcomposer/
 类似资料:
  • 我无法正确发送带有附件的电子邮件。我正在使用Gradle和Spring 5。一切都设置正确,因为我已经发送了文本和html电子邮件。过了一段时间,我发送给客户的文本要求超过了电子邮件的限制,所以我需要将纯文本提取到CSV文件中,并将其作为附件发送到电子邮件中。看起来我只得到了所附文件的一部分,而不是完整的文件? 代码: 电子邮件正文无法正确发送。这是我在电子邮件收件箱中收到的原始邮件: 主题:报表

  • 问题内容: 我找到了这个库,并设法以空电子邮件发送附件,但没有将文本和附件组合在一起。 https://github.com/sloonz/go-mime-message 如何做呢? 问题答案: 我最终自己实现了它:https : //github.com/scorredoira/email 用法很简单:

  • 问题内容: 我想编辑以下代码并发送带有附件的电子邮件。附件是一个pdf文件,在Linux环境中位于/home/myuser/sample.pdf下。我应该在下面更改什么? 问题答案: 在这种情况下,您使用电子邮件包创建了一条消息- 然后发送消息。 这里有几个示例-http: //docs.python.org/library/email- examples.html 更新 由于上述原因,更新链接会

  • 问题内容: 如何使用Outlook 2010发送带有附件的电子邮件(本地文件或Intranet中的文件)? 似乎不起作用。 问题答案: 不,这根本不可能。协议中对此没有规定,如果可能的话,这将是一个巨大的安全漏洞。 发送文件但让客户端发送我能想到的电子邮件的最佳方法是: 让用户选择一个文件 将文件上传到服务器 上传后让服务器返回随机文件名 在消息正文中建立一个包含上载文件的URL 的链接

  • 所有数据以文本格式发送,而不是作为附件的PDF格式。 内容类型:多部分/备用;边界=myapp--_myapp_内容类型:文本/普通;charset=UTF-8Content-Transfer-Encoding:7bit测试消息--myapp--_myapp_Content-Type:Application/pdf;name=myPdf。PDF内容处置:附件;filename=myPdf。PDF内

  • 我正在将Mailgun集成到我的iOS应用程序中,并尝试发送带有附件的电子邮件。电子邮件已发送,但附件似乎已被忽略。有什么想法吗?代码如下。我使用的是AFNetworking 2,我没有使用本机的Mailgun Objective-C SDK,因为它似乎没有得到维护。 我可以使用curl发送附件,例如: