使用createTestAccount()的Nodemailer状态代码500

问题描述 投票:0回答:1

我正在使用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

javascript node.js nodemailer
1个回答
0
投票

我认为主要问题是您正在代码中的函数内调用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();
    });
}

sendEmailexpress的中间件功能。

© www.soinside.com 2019 - 2024. All rights reserved.