具有XOauth2设置的nodemailer表示凭据错误

时间:2017-03-01 06:09:48

标签: node.js google-oauth2 nodemailer

我有以下节点代码:

var nodemailer = require("nodemailer");
var xoauth2 = require('xoauth2');
/*
    Here we are configuring our SMTP Server details.
    STMP is mail server which is responsible for sending and recieving email.
*/
var smtpTransport = nodemailer.createTransport({
    service: "Gmail",
    host: "smtp.gmail.com",
    auth: {
        XOAuth2: {
            user: "buckscountytourofhonor@gmail.com",
            pass: "****",
            clientId:"myclientidenteredhere",
            clientSecret:"mysecretenteredhere",
            refreshToken:"mytokenenteredhere"
        }

    }
});
module.exports = function(app, passport){

    app.get('/send',function(req,res){
        var mailOptions={
            to : 'buckscountytourofhonor@gmail.com',
            from: req.query.email,
            subject : req.query.subject,
            text : req.query.name +": "+req.query.message
        }
        console.log(mailOptions);
        smtpTransport.sendMail(mailOptions, function(error, response){
            if(error){
                console.log(error);
                res.end("error");
            }else{
                console.log("Message sent: " + response.message);
                res.end("sent");
            }
        });
    });

我目前正在关注this教程。实际上跟着很多,但这是最简洁的。

我收到以下错误:

  

错误:登录无效:不接受535-5.7.8用户名和密码

任何人都可以帮我弄清楚我错过了什么,我花了3个多小时研究这个。

1 个答案:

答案 0 :(得分:2)

我似乎刚刚面对这个问题。我有一个较旧的实现与xoauth工作正常,另一个应用程序具有相同的代码,但更新的nodemailer安装确实给了

  

登录无效:535-5.7.8不接受用户名和密码。

我是从xoauth2那样来的

var generator = require('xoauth2').createXOAuth2Generator({
                                user: 'xxx',
                                clientId: 'xxx',
                                clientSecret: 'xxx',
                                refreshToken: 'xxx'
                            });

var transporter = nodemailer.createTransport(({
                                service: 'gmail',
                                auth: {
                                    xoauth2: generator
                                }

var transporter = nodemailer.createTransport(({
                                service: 'gmail',
                                auth: {
                                    type: 'OAuth2',
                                    user: 'xxx',
                                    clientId: 'xxx',
                                    clientSecret: 'xxx',
                                    refreshToken: 'xxxx'
                                }
                            }));

这对我有用。不确定是否值得一试。我确实遵循了相同的Gmail设置教程,这在我之前的实施中确实有效,并且再次与新项目一起使用。