我正在使用Nodemailer页面上的默认代码(由我添加的控制台):
nodemailer.createTestAccount((err, account) => {
console.log(err);
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'smtp.ethereal.email',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: account.user, // generated ethereal user
pass: account.pass // generated ethereal password
}
});
});
它返回以下错误:
Error: Invalid status code 500
at ClientRequest.<anonymous> (/Users/angelodias/GIT/bootcamp/04-iniciando-back-end/node_modules/nodemailer/lib/fetch/index.js:221:23)
at ClientRequest.emit (events.js:223:5)
at ClientRequest.EventEmitter.emit (domain.js:475:20)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:583:27)
at HTTPParser.parserOnHeadersComplete (_http_common.js:115:17)
at TLSSocket.socketOnData (_http_client.js:456:22)
at TLSSocket.emit (events.js:223:5)
at TLSSocket.EventEmitter.emit (domain.js:475:20)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11) {
type: 'FETCH',
sourceUrl: 'https://api.nodemailer.com/user'
}
我在做什么错?有任何错误吗?
我尝试用.then()。catch()捕获相同的错误。
正在运行节点v12.14.1和Nodemailer 6.4.6
我认为主要问题是您正在代码中的函数内调用nodemailer.createTransport
。
您的传输器应该在代码内部是一个常数。并且在发送电子邮件时必须被调用。
这里是当前工作代码的示例:
mailsender.js
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: process.env.SMTPUSER,
pass: process.env.SMTPPASS
},
logger: false, // log to console
debug: false // include SMTP traffic in the logs
});
exports.sendEmail = function(req, res) {
const mailOptions = {
from: process.env.SMTPUSER,
subject: 'My site mail sender',
text: 'Mensagem de: ' + req.body.nome + ', email: [' + req.body.email + '] ' + req.body.mensagem,
to: process.env.SMTPRECIPIENT
}
transporter.sendMail(mailOptions).then((trans) => {
res.status(200);
res.json(trans);
res.end();
}).catch((error) => {
res.status(500);
res.json(error);
res.end();
});
}
sendEmail
是express
的中间件功能。