首页 > 解决方案 > 即使凭据错误,nodemailer verify 也会返回成功

问题描述

所以我正在尝试创建一个 gmail 客户端作为学习项目。我正在使用 nodemailer 模块来验证凭据并发送邮件。我的代码如下

let data ;
    req.setEncoding('utf8') ;
    await req.on('data', (chunk) => {
        data = query.parse(chunk) ;
    });

    const mailer = nodemailer.createTransport({service: 'gmail'}) ;

    mailer.options.auth = await data ;

    mailer.verify((err, suc) => {
        if (mailer.options.auth === undefined) {
          console.log("No Credentials") ;
        }
        else if (err) {
            console.log("Error : ") ;
        } else {
            console.log("success") ;
        }
      }) ;

PS:包装它的函数是异步箭头函数

"No Credentials"当从表单接收的帖子数据为空时,它正在正确记录,"success"即使输入的凭据错误,它也在记录。我希望尽快得到解决方案,在此先感谢。

标签: javascriptnode.jsnodemailer

解决方案


我自己试过了,我得出了这两个结论:

  • auth在使用方法创建Mail对象后,我还没有找到任何方法来重新设置属性createTransport()。也许有一个,也许没有。你得调查一下。
  • verify()方法不检查auth对象是否已定义,而是检查其包含的道具是否已定义且有效

但这就是我所做的并且有效:

// the function returns an object of type { user: string, pass: string }
const credentials = await getMyAuthData();
const config = {
  service: 'Gmail',
  auth: credentials
};

const mailer = nodemailer.createTransport(config);

mailer.verify((error, success) => {
  if (error) throw error;
  console.log(success);
});

推荐阅读