node.js电子邮件没有通过gmail smtp发送

时间:2015-07-20 12:41:56

标签: email smtp gmail nodemailer

我试图发送电子邮件gmail smtp,但我收到了错误:

我的电子邮件和密码是正确的我使用nodemailer发送邮件;

       var nodemailer = require('nodemailer');

                // create reusable transporter object using SMTP transport 
                var transporter = nodemailer.createTransport({
                    service: 'Gmail',
                    auth: {
                        admin: 'myuseremail.com',
                        pass: 'password'
                    }
                });

                var mailOptions = {
                    from: 'sender address', // sender address 
                    to: to, // list of receivers 
                    subject: 'Password Reset', // Subject line 
                    html: 'Your one time password is : <b>' + temporaryPassword + ' </b>' // html body 
                };

                transporter.sendMail(mailOptions, function (error, info) {
                    console.log(error,info);
              }

在日志中我收到错误:

    {
     [Error: Invalid login]
      code: 'EAUTH',
      response: '535-5.7.8 Username and Password not accepted. Learn more at\n535 5.7.8  https://support.google.com/mail/answer/14257 k5sm20957041pdo.48 - gsmtp',
      responseCode: 535
    } 

我尝试了一些链接,但这不起作用:
     https://laracasts.com/discuss/channels/general-discussion/help-email-doesnt-get-sent-with-gmail-smtp

8 个答案:

答案 0 :(得分:26)

var transporter = nodemailer.createTransport({
  service: 'Gmail',
  auth: {
    user: 'user@gmail.com',
    pass: 'password'
  }
});

尝试以上操作,并执行以下操作。

登录https://www.google.com/settings/security/lesssecureapps开启访问安全性较低的应用。

我希望它也适合你。

谢谢。

答案 1 :(得分:7)

  1. 首先,您必须启用设置,以允许所使用的gmail帐户的安全性较差的应用程序。这是链接:https://myaccount.google.com/lesssecureapps

  2. 其次,允许访问“显示解锁字幕选项”(允许访问您的Google帐户)。这是链接:https://accounts.google.com/DisplayUnlockCaptcha

答案 2 :(得分:1)

如果您使用的是OAuth2并且您面临上述问题,请按照下图所示配置我的传输器解决了我的问题。

const transporter = nodemailer.createTransport({
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    type: 'OAuth2',
    user: process.env.MAIL_USER,
    clientId: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    refreshToken: process.env.GOOGLE_CLIENT_REFRESH_TOKEN
  }
});

如果您不确定如何生成ID,密码和令牌,请按照此处的步骤https://medium.com/@pandeysoni/nodemailer-service-in-node-js-using-smtp-and-xoauth2-7c638a39a37e

答案 3 :(得分:0)

var transporter = nodemailer.createTransport({
  service: 'Gmail',
  auth: {
    user: 'user@gmail.com',
    pass: 'password'
  }
});

试试这个。

答案 4 :(得分:0)

let transporter = nodeMailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    secure: true,
    auth: {
        user: 'example@gmail.com',
        pass:'your gmail pass'
    }
});

答案 5 :(得分:0)

https://myaccount.google.com/lesssecureapps

单击此链接,在“不太安全的应用程序访问权限”上。因此,在该gmail将向您的设备发送电子邮件后,请确认是您。您完成了快乐的编码

答案 6 :(得分:0)

Google不允许您直接向他人发送电子邮件。首先,您必须创建一个应用密码。为此,请按照以下步骤操作完成

  1. 转到“管理帐户”部分。
  2. 然后单击左侧的安全链接。
  3. 在登录google时,点击应用密码,它将要求您在登录后再次登录
  4. 它将询问“选择应用程序”,出于邮件目的“选择邮件”,然后询问您要从中发送邮件的选择设备。
  5. 完成所有这些步骤之后,它将为该事物生成密码并像这样插入
    var smtpTransport = nodemailer.createTransport({
    service: "Gmail",
    auth: {
        user: "example@example.com",
        pass: "password"
    }

就是这样。

答案 7 :(得分:0)

对我来说 secure:true给出ssl错误。 我变了 安全:如下所示为我工作。

let transporter = nodeMailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,    //<<here
    auth: {
        user: 'example@gmail.com',
        pass:'your gmail pass'
    }
});