【问题标题】:why nodemailer giving error here || UnhandledPromiseRejectionWarning || No recipients defined为什么nodemailer在这里给出错误|| UnhandledPromiseRejectionWarning ||未定义收件人
【发布时间】:2021-11-09 22:37:18
【问题描述】:

我是 js 和开发新手,制作 node mailer 来发送电子邮件 将有效负载推送到数据库后。

错误 (node:8244) UnhandledPromiseRejectionWarning: 错误 [ERR_HTTP_HEADERS_SENT]: 发送到客户端后无法设置标头

错误:未定义收件人

我的装箱产品后控制器

const mailer = require("../config/nodemailer");
module.exports.create = async (req, res) => {

  try {
  let product = new Product({
    name: req.body.name,
    description: req.body.description,
    isFeatured: req.body.isFeatured,
  });

    // await product.save();
    await mailer.contact(req, res); // node mailer
    // console.log("productCreated ==>>", product);
    // res.status(200).json(product);

    return res.send("Dummy :product created");
  } catch (error) {
    console.log("******Error While inserting data******", error);
    res.status(500).json({ message: error.message });
  }
};

节点邮件控制器

const nodemailer = require("nodemailer");

exports.contact = async (req, res) => {
//   var name = req.body.name;
//   var from = req.body.from;
//   var message = req.body.message;
//   var to = "jn";
  try {
    let transporter = nodemailer.createTransport({
      service: "gmail",
      host: "smtp.gmail.com",
      port: 587,
      secure: false, // true for 465, false for other ports
      auth: {
        user: "**********@gmail.com", 
        pass: "password",
      },
    });
    //
    var mailoptions = {
      from: "**********@gmail.com",
      to:"**********@gmail.com",
      subject: "Sending Email using Node.js",
      text: "That was easy!",
    };
    await transporter.sendMail({
      mailoptions,
      function(err, res) {
        if (err) {
          return res.status(200).json({
            message: err.message,
          });
        }
        return res.status(200).json({ message: "success" });
      },
    });
  } catch (error) {
    console.log(error);
    return res.json({ message: message });
  }
};

【问题讨论】:

    标签: javascript asynchronous smtp nodemailer unhandled-promise-rejection


    【解决方案1】:

    Nodemailer 需要一个数组或逗号分隔的列表,您使用的是纯字符串

    to - 将出现在 To: 字段中的逗号分隔列表或收件人电子邮件地址数组

    取自官方文档 https://nodemailer.com/message/

    【讨论】:

    • 谢谢,“to”的问题已解决,但第一个问题仍然存在:UnhandledPromiseRejectionWarning: E​​rror: Invalid login: 535-5.7.8 Username and Password not accepted________正确的电子邮件和密码
    • 这可能看起来很愚蠢,但您是否设置了正确的凭据?
    • 是的,所有的凭据都是正确的......没有找到失败的地方!!!
    • nodemailer 中有一个明确的部分供 gmail 使用,您是否启用了 2FA? nodemailer.com/usage/using-gmail
    【解决方案2】:

    兄弟,先导入nodemailer

    const nodemailer = require("nodemailer");
    
    var transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        user: 'youremail@gmail.com',
        pass: 'yourpassword'
      }
    });
    
    var mailOptions = {
      from: 'youremail@gmail.com',
      to: 'friend@yahoo.com',
      subject: 'Your subject',
      text: 'Your message!'
    };
    
    transporter.sendMail(mailOptions, function(error, info){
      if (error) {
        console.log(error);
      } else {
        console.log('Email sent: ' + info.response);
      }
    });
    

    按照上述步骤,确保您的发送邮件 ID 没有启用两步验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2012-01-30
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多