Node.js 从nodeEmailer为nodejs发送电子邮件

Node.js 从nodeEmailer为nodejs发送电子邮件,node.js,nodemailer,Node.js,Nodemailer,当我尝试从nodeEmailer发送电子邮件时,我得到一个错误:EAUTH API 我曾尝试使用Hotmail和Gmail作为我的服务,因为我从文档中了解到,如果Gmail不起作用,就不要使用它。然而,这似乎不是问题所在 我想使用此电子邮件在我的应用程序中启用忘记密码 守则: var smtpTransport = nodemailer.createTransport({ service: 'Hotmail', auth: { user: email, pass: pas

当我尝试从nodeEmailer发送电子邮件时,我得到一个错误:EAUTH API 我曾尝试使用Hotmail和Gmail作为我的服务,因为我从文档中了解到,如果Gmail不起作用,就不要使用它。然而,这似乎不是问题所在

我想使用此电子邮件在我的应用程序中启用忘记密码

守则:

var smtpTransport = nodemailer.createTransport({
  service: 'Hotmail',
  auth: {
    user: email,
    pass: pass
  }
});

router.post('/forgotpassword', function(req, res){
            async.waterfall([
                function(done) {
                    User.findOne({
                        email: req.body.email
                    }).exec(function(err, user) {
                        if (user) {
                            done(err, user);
                        } else {
                            done('User not found.');
                        }
                    });
                },
                function(user, done) {
      // create the random token
      crypto.randomBytes(20, function(err, buffer) {
        var token = buffer.toString('hex');
        done(err, user, token);
      });
  },
  function(user, token, done) {
    User.findByIdAndUpdate({ _id: user._id }, { reset_password_token: token, reset_password_expires: Date.now() + 86400000 }, { upsert: true, new: true }).exec(function(err, new_user) {
        done(err, token, new_user);
    });
  },
  function(token, user, done) {
    var data = {
        to: user,
        from: email,
        template: 'forgot-password-email',
        subject: 'Password help has arrived!',
        context: {
            url: 'http://localhost:3000/user/reset_password?token=' + token,
            name: req.body.email
        }
    };

    smtpTransport.sendMail(data, function(err) {
        if (!err) {
            return res.json({ message: 'Kindly check your email for further instructions' });
        } else {
            return done(err);
        }
    });
  }
  ], function(err) {
    return res.status(422).json({ message: err });
  });
        });
我的电子邮件和密码是正确的

邮递员的错误是

{“消息”:{“代码”:“EAUTH”,“命令”:“API”}


我认为您应该更新代码,并需要一个模块来发送:

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');

var smtpTransport = nodemailer.createTransport(smtpTransport({
  service: 'Hotmail',
  auth: {
    user: email,
    pass: pass
  }
}));
作为安全预防措施,谷歌可能要求您在登录新设备或应用程序时完成一个名为解锁验证码的附加步骤

您可能需要手动允许访问您的Google帐户

使用浏览器登录到您的Google帐户,然后访问以下链接以解锁该帐户:

单击“允许”按钮后,您将看到以下消息:

已启用帐户访问。请尝试从新设备或应用程序再次登录您的Google帐户。

并允许不太安全的应用程序访问:


我测试它,为我工作

1-使用Hotmail smtp配置

   var transporter = nodemailer.createTransport({
        host: "smtp-mail.outlook.com", // hostname
       secureConnection: false, // TLS requires secureConnection to be false
       port: 587, // port for secure SMTP
      tls: {
        ciphers:'SSLv3'
      },
     auth: {
        user: 'mymail@outlook.com',
         pass: 'myPassword'
        }
  });
或者使用内置服务

var transport = nodemailer.createTransport("SMTP", {
  service: "hotmail",
  auth: {
    user: "user@hotmail.com",
    pass: "password"
  }
 });
另外,请确保您的用户名和密码正确,并且Hotmail不会因为安全问题而阻止您的连接

2-你可以使用gmail服务,但你必须