如何将 nodemailer 与 claudia-api-builder 一起使用
How to use nodemailer with claudia-api-builder
我正在尝试创建一个简单的 REST API 我可以 post 发电子邮件给,然后给自己发电子邮件。我正在使用 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";
}
当我通过 postman 进行调试时,通过 posting 原始 JSON
{
"senderEmail": "test2",
"subject": "test",
"content":"test"
}
我收到 "Function Finished" 我真的不明白怎么可能,因为 if 或 else 应该在 transporter.sendMail(...
下触发,从函数返回。我也没有收到电子邮件,这是我的最终目标
我遇到了同样的问题,直到我开始退回运输车
return transporter.sendMail(mailOptions)
.then(info => {
console.log('email sent: ', info)
return {'status': 'OK'}
})
.catch(err => {
console.log('email error: ', err)
return {'status': 'ERROR'}
})
我正在尝试创建一个简单的 REST API 我可以 post 发电子邮件给,然后给自己发电子邮件。我正在使用 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";
}
当我通过 postman 进行调试时,通过 posting 原始 JSON
{
"senderEmail": "test2",
"subject": "test",
"content":"test"
}
我收到 "Function Finished" 我真的不明白怎么可能,因为 if 或 else 应该在 transporter.sendMail(...
下触发,从函数返回。我也没有收到电子邮件,这是我的最终目标
我遇到了同样的问题,直到我开始退回运输车
return transporter.sendMail(mailOptions)
.then(info => {
console.log('email sent: ', info)
return {'status': 'OK'}
})
.catch(err => {
console.log('email error: ', err)
return {'status': 'ERROR'}
})