Как отправить почту с вложением в lambda nodeJs с помощью сервиса SES - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь отправить письмо с приложением. Я уже использовал сервис SES для отправки простой и HTML контентной почты. но теперь я хочу отправить письмо с вложениями.

Я использую сервис Amazon SES для отправки писем, и я использую метод 'sendRawEmail' для отправки почты с вложениями.

Я получаю сообщение об ошибке, подобное этому. InvalidParameterValue: Nested group

Я не нашел примеров Node для этого типа ошибки.

1 Ответ

0 голосов
/ 09 апреля 2020

Я очень разочаровываюсь, пытаясь отправить электронную почту с NodeJS SES API. Я нашел проблему и исправил ее с помощью пакета mailcomposer npm. Теперь я могу отправлять письма с вложениями.

Установить AWS SDK

npm i aws-sdk

Теперь установить Manil composer

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'
      }]
    }

Бизнес-логика c Код:

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/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...