Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在claudia api builder中使用NodeEmailr_Javascript_Amazon Web Services_Nodemailer_Claudiajs - Fatal编程技术网

Javascript 如何在claudia api builder中使用NodeEmailr

Javascript 如何在claudia api builder中使用NodeEmailr,javascript,amazon-web-services,nodemailer,claudiajs,Javascript,Amazon Web Services,Nodemailer,Claudiajs,我正在尝试创建一个简单的RESTAPI,我可以向其发送电子邮件,然后自己发送电子邮件。我正在使用nodemailer,并已将其设置为一个express应用程序,它工作正常,确认我的身份验证等工作正常。我想在线托管它,所以我使用claudia.js创建了lambda和API网关设置,但这似乎破坏了它 代码 const nodemailer = require('nodemailer'); const secrets = require('./secret'); const apiBuilder =

我正在尝试创建一个简单的RESTAPI,我可以向其发送电子邮件,然后自己发送电子邮件。我正在使用nodemailer,并已将其设置为一个express应用程序,它工作正常,确认我的身份验证等工作正常。我想在线托管它,所以我使用claudia.js创建了lambda和API网关设置,但这似乎破坏了它

代码

const nodemailer = require('nodemailer');
const secrets = require('./secret');
const apiBuilder = require('claudia-api-builder');

api = new apiBuilder();
module.exports = api;

var mailOptions;
var logMsg = "none";

api.post('/email', async (req, res) => {
  mailOptions = {
    from: secrets.email,
    to: secrets.email,
    subject: 'Email From: ' + req.body.senderEmail + ' | ' + req.body.subject,
    text: req.body.content,
  };
  sendMail(mailOptions);
  return logMsg;
})

const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: secrets.email,
    pass: secrets.pwd
  }
});

function sendMail(mailOptions) {
  logMsg="Starting Send Function";
  transporter.sendMail(mailOptions, function (error, info) {
    if (error) {
      logMsg = error;
      return error;
    } else {
      logMsg = "Send Complete";
      return true;
    }
  });
  logMsg="Function finished";
}
当我通过postman调试时,通过发布原始JSON

{
    "senderEmail": "test2",
    "subject": "test",
    "content":"test"
}

我收到了“函数已完成”的消息,但我并不认为这是可能的,因为肯定if或else应该在
transporter.sendMail(…
)下启动,从函数返回。我也没有收到作为我最终目标的电子邮件,直到我开始返回transporter时,我才遇到了同样的问题

return transporter.sendMail(mailOptions)
  .then(info => {
    console.log('email sent: ', info)
    return {'status': 'OK'}
  })
  .catch(err => {
    console.log('email error: ', err)
    return {'status': 'ERROR'}
  })