javascript - 即使凭据错误,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"
即使输入的凭据错误,它也在记录。我希望尽快得到解决方案,在此先感谢。
解决方案
我自己试过了,我得出了这两个结论:
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);
});
推荐阅读
- python - 使用字典 get() 作为函数从地图创建 Python 列表与使用 for 循环创建字典 get() 列表
- html - 我可以让一个网站只在 chrome 上可见并在它不是 chrome 时重定向到其他网站吗?
- android - 运动布局中的反向过渡
- swift - REST-API 返回状态码 200 的纯文本和状态码 400 的 json
- sql - 从 XML 中提取值不适用于查询节点或值
- javascript - 如何将数据从 ejs 模板发送到表达服务器以存储在数据库中?
- vba - x64 上 Class 方法崩溃的地址
- trim - 使用 Dataweave 在 Mule4 中修剪字符
- python - 只保留恰好出现一次的行
- apache - 启动 httpd:/usr/sbin/httpd:符号查找错误:/usr/sbin/httpd:未定义符号:apr_procattr_perms_set_register