【问题标题】:Sending email from nodemailer for nodejs从 nodemailer 为 nodejs 发送电子邮件
【发布时间】:2019-09-03 03:13:38
【问题描述】:

当我尝试从 nodemailer 发送电子邮件时,我收到一个错误: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 });
  });
        });

我的邮箱和密码是正确的。

邮递员的错误是

{"message":{"code":"EAUTH","command":"API"}}

【问题讨论】:

    标签: node.js nodemailer


    【解决方案1】:

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

    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 帐户,然后访问以下链接将其解锁:click here

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

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

    并允许安全性较低的应用访问:less secure apps

    我测试它,为我工作

    【讨论】:

      【解决方案2】:

      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,但你必须allow less secure connection to your Gmail

      【讨论】:

        【解决方案3】:

        该错误表示您的密码或邮箱不正确,请检查一次。

        另外,您可以访问下面的链接来切换安全性较低

        linkhttps://myaccount.google.com/u/1/lesssecureapps

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-01
          • 1970-01-01
          • 2017-05-16
          相关资源
          最近更新 更多