【问题标题】:How to use nodemailer with claudia-api-builder如何将 nodemailer 与 claudia-api-builder 一起使用
【发布时间】:2020-05-24 12:22:59
【问题描述】:

我正在尝试创建一个简单的 REST API,我可以向其发送电子邮件,然后给自己发送电子邮件。我正在使用 nodemailer 并将其设置为快速应用程序,并且一切正常,确认我的身份验证等都很好。我想在线托管它,所以我使用 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";
}

当我通过邮递员进行调试时,通过发布原始 JSON

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

我收到“函数完成”,我真的不明白 if 或 else 应该在transporter.sendMail(... 下触发,从函数返回。我也没有收到作为我最终目标的电子邮件

【问题讨论】:

    标签: javascript amazon-web-services nodemailer claudiajs


    【解决方案1】:

    在我开始退回运输机之前,我遇到了同样的问题

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2021-12-23
      • 2014-03-20
      • 2018-06-13
      • 2021-08-06
      相关资源
      最近更新 更多