在AWS Lambda中使用时,Nodemailer回调不起作用

时间:2019-10-24 02:38:18

标签: node.js aws-lambda serverless-framework amazon-ses nodemailer

Nodemailer回调未在transporter.sendMail中执行。当我将return语句放入nodemailer回调中时,aws lambda也会作为内部服务器错误给出响应。但是,当我将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
  //   )
  // }
}

0 个答案:

没有答案