【问题标题】:node.js email doesn't get sent with gmail smtpnode.js 电子邮件不会通过 gmail smtp 发送
【发布时间】:2015-10-09 14:16:35
【问题描述】:

我正在尝试发送电子邮件 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

【问题讨论】:

    标签: email smtp gmail nodemailer


    【解决方案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
      }
    });
    

    【讨论】:

    【解决方案2】:
    1. 首先,您必须启用设置以允许您正在使用的 gmail 帐户使用安全性较低的应用程序。这是链接:https://myaccount.google.com/lesssecureapps

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        就是这样。

        【讨论】:

          【解决方案5】:
          var transporter = nodemailer.createTransport({
            service: 'Gmail',
            auth: {
              user: 'user@gmail.com',
              pass: 'password'
            }
          });
          

          尝试上述方法,然后执行以下对我有用的操作。

          登录到https://www.google.com/settings/security/lesssecureapps开启访问不太安全的应用程序。

          我希望它也对你有用。

          谢谢。

          【讨论】:

          • 如果您启用了 2F 身份验证,则“安全性较低的应用程序”功能将被禁用。您需要生成应用密码。为此,请按照以下步骤操作:support.google.com/accounts/answer/185833
          • 我遇到了同样的错误,解决方案是不太安全的应用提示。顺便说一句,您也可以通过smtp://email@gmail.com:password@smtp.gmail.com 登录
          【解决方案6】:

          https://myaccount.google.com/lesssecureapps

          单击此链接,在您的不太安全的应用访问中。所以在那之后gmail会向你的设备发送电子邮件,确认是你。你已经完成了快乐的编码

          【讨论】:

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

            【讨论】:

            • 虽然它似乎是一个解决方案,但最好提供一些解释为什么它可以解决问题。访问 SO 的没有经验的用户可能不会立即理解这里的游戏规则改变者是什么。
            • 它给了我一个这样的错误:错误:140528704497472:error:140770FC:SSLroutines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827:
            【解决方案8】:
            var transporter = nodemailer.createTransport({
              service: 'Gmail',
              auth: {
                user: 'user@gmail.com',
                pass: 'password'
              }
            });
            

            试试这个。

            【讨论】:

              猜你喜欢
              • 2017-05-12
              • 2020-02-21
              • 1970-01-01
              • 2014-01-04
              • 2016-01-16
              • 2011-08-11
              • 2022-08-14
              • 2014-10-19
              • 2013-01-31
              相关资源
              最近更新 更多