我在使用 nodemailer 时遇到错误

时间:2021-03-21 12:11:06

标签: javascript node.js express gmail nodemailer

here's my UserController.js where i am receiving user email and password as a post request

const User = require('../models/User');
const nodemailer = require('nodemailer');

module.exports.User = (req, res) => {   
     if(req.body.password != req.body.confirm_password){
            res.redirect('back')
        }
        
    User.findOne({email: req.body.email}, function(err, user){
        //error in creating the user
        if(err){console.log('error in creating the user');}

        //if user doesnot initially exist in the daatbase
        if(!user){
            User.create(req.body, function(err, user){
                if(err){console.log('error');}
                console.log('User created');
            })
            return res.send('<script>alert("User created")</script>');
        }
        else{
            console.log('User already present in the database');
            let mailTransporter = nodemailer.createTransport({ 
                service: 'gmail', 
                host: 'smtp.gmail.com',
                auth: { 
                    email: 'my_email',
                    pass: 'my_email_password'
                } 
            }); 
              
            let mailDetails = { 
                from: 'my_email', 
                to: req.body.email, 
                subject: 'from dhruv singhal as a project', 
                text: 'your data is successfully stored on our database'
            }; 
              
            mailTransporter.sendMail(mailDetails, function(err, data) { 
                if(err) { 
                    console.log(err); 
                } else { 
                    console.log('Email sent successfully'); 
                } 
            });
            res.send('<script>alert("your have already got mail from our side")</script>')
        }
    })
}


i am getting error as :- 

/* 错误:缺少“PLAIN”的凭据 在 SMTPConnection._formatError (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:774:19) 在 SMTPConnection.login (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:438:38) 在 C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-transport\index.js:271:32 在 SMTPConnection。 (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:209:17) 在 Object.onceWrapper (events.js:421:28) 在 SMTPConnection.emit (events.js:315:20) 在 SMTPConnection._actionEHLO (C:\Usenter code hereers\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:1303:14) 在 SMTPConnection._processResponse (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:932:20) 在 SMTPConnection._onData (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:739:14) 在 TLSSocket.SMTPConnection._onSocketData (C:\Users\dhruv singhal\Desktop\web_development_project\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) 在 TLSSocket.emit (events.js:315:20) 在 addChunk (_stream_readable.js:295:12) 在 readableAddChunk (_stream_readable.js:271:9) 在 TLSSocket.Readable.push (_stream_readable.js:212:10) 在 TLSWrap.onStreamRead (internal/stream_base_commons.js:186:23) { 代码:'EAUTH', 命令:'API' }

i have enabled less secure apps on google please help

complete github code :-https://github.com/dhruv354/form.git*/

2 个答案:

答案 0 :(得分:0)

您是否在启用 less secure app 的基础上完成了“验证码挑战”?

https://accounts.google.com/b/0/displayunlockcaptcha

答案 1 :(得分:0)

我相信您需要 email: 'my_email' 而不是 user: 'my_email'。请参阅 this nodemailer 示例。

如另一个答案中所述:第一次从您的应用发送之前,请从相关的 Google 帐户点击此:https://accounts.google.com/DisplayUnlockCaptcha