Обратный вызов Nodemailer не работает при использовании в AWS лямбда - PullRequest
0 голосов
/ 24 октября 2019

Обратный вызов Nodemailer не выполняется в transporter.sendMail. Также лямбда-ответ aws выдает ответ как внутреннюю ошибку сервера, когда я помещаю инструкцию return в обратный вызов nodemailer. Но когда я помещаю оператор return за пределы обратного вызова, aws lambda отвечает «своим рабочим» сообщением, но не регистрирует ошибку или информацию.

'use strict'

const aws = require('aws-sdk')
const parser = require('lambda-multipart-parser')
const nodemailer = require('nodemailer')

var ses = new aws.SES()

module.exports.sendWithAttachment = async (event) => {
  console.log('the evenet is', event)
  const result = await parser.parse(event)
  console.log('The result is', result)

  console.log('The result files is', result.files)

  let transporter = nodemailer.createTransport({
    SES: ses
  })

  console.log('Created transporter')
  transporter.sendMail(
    {
      from: 'fromemail',
      to: 'toemail',
      subject: 'Message',
      text: 'I hope this message gets sent!',
      attachments: result.files
    },
    function(err, info) {
      if (err) {
        console.log(err)
        console.log('Email Failed')
        return {
          statusCode: 200,
          headers: {
            'Access-Control-Allow-Origin': '*'
          },
          body: JSON.stringify(
            {
              message: 'Not working'
            },
            null,
            2
          )
        }
      } else {
        console.log('email sent!')
        console.log('info message', info)
        // Throws internal server error when put the statement here
        return {
          statusCode: 200,
          headers: {
            'Access-Control-Allow-Origin': '*'
          },
          body: JSON.stringify(
            {
              message: 'its working'
            },
            null,
            2
          )
        }
      }
    }
  )
  // doesn't log the error or info when put here
  // return {
  //   statusCode: 200,
  //   headers: {
  //     'Access-Control-Allow-Origin': '*'
  //   },
  //   body: JSON.stringify(
  //     {
  //       message: 'its working'
  //     },
  //     null,
  //     2
  //   )
  // }
}

...