即使凭据错误,nodemailer verify 也会返回成功

nodemailer verify is returning success even with bad credentials

所以我正在尝试创建一个 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 : the function wrapping it is a async arrow function

当从表单收到的 post 数据为空时,它会正确记录 "No Credentials",即使输入的凭据错误,它也会记录 "success"。希望尽快解决,先谢谢了。

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

  • 在使用 createTransport() 方法创建 Mail 对象后,我还没有找到任何方法来重新设置 auth 属性。也许有,也许没有。你将不得不调查它。
  • 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);
});