当前位置: 首页 > 知识库问答 >
问题:

使用nodejs(nodemailer)设置stmp邮件

司空鸿熙
2023-03-14

我正在尝试使用一个简单的nodejs应用程序发送电子邮件。但我遇到了一个错误,错误是:

错误:无效登录:534-5.7.14请通过您的网络浏览器和534-5.7.14登录,然后重试。534-5.7.14在534 5.7.14了解更多信息_formatError22-v6sm29249729pfl.126-SMTPConnection的gsmtp。SMTPConnection的https://support.google.com/mail/answer/78754(C:\User\USER\Desktop\codeworkr\node_modules\nodemailer\lib\smtp-connect\index.js:606: 19)。SMTPConnection的_actionAUTHComplete(C:\User\USER\Desktop\codeworkr\node_modules\nodemailer\lib\smtp-connect\index.js:1335: 34)。SMTPConnection的_responseActions.push.str(C:\User\USER\Desktop\codeworkr\node_modules\nodemailer\lib\smtp-connect\index.js:366: 26)。SMTPConnection的_processResponse(C:\User\USER\Desktop\codeworkr\node_modules\nodemailer\lib\smtp-connect\index.js:762: 20)。SMTPConnection的_onData(C:\User\USER\Desktop\codeworkr\node_modules\no)在TLSSocket的可读AddChunk(_stream_readable.js:250: 11)。Readable.push(_stream_readable.js:208: 10)在TLSWrap.onread(net.js:597: 20)

我的代码是:

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  service: 'gmail',
  secure: false,
 // port: 25,
  auth: {
    user: 'surendrap7208@gmail.com',
    pass: ''
  }
 /* tls: {
    rejectUnauthorized: false
  }*/
});



var mailOptions = {
  from: 'surendrap7208@gmail.com',
  to: 'surendrap720@gmail.com',
  subject: 'Sending Email using Node.js',
  text: 'Hello'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);=
  }

    });

出于安全考虑,我已经删除了密码。

共有2个答案

万嘉熙
2023-03-14

我有另一个同样的解决方案。如果您想出于安全目的删除密码,那么也可以使用我的解决方案

首先,您需要一些发件人帐户凭据,您可以从这里创建:https://console.developers.google.com/projectselector/apis/credentials?supportedpurview=project

Node.js,Nodemailer,SMTP问题

这是我的测试代码[file:server.js]

//start server
var http = require('http');
// Create a Transport instance using nodemailer
var nodemailer = require('nodemailer');

var smtpTransport = nodemailer.createTransport({
    host: "smtp.gmail.com",
    auth: {
        type: "OAuth2",
        user: "sender_email_id",
        clientId: "YOUR_CLIENT_ID",
        clientSecret: "YOUR_CLIENT_SECRET",
        refreshToken: "YOUR_REFRESH_TOKEN"
      }
});

var htmlBody = '<h2>Hello Body</h2>';
// Setup mail configuration
var mailOptions = {
    from: 'serder_email_id', // sender address
    to: 'recipent_email_id', // list of receivers
    subject: 'TEST SUBJECT', // Subject line
    text: 'Hello Body', // plaintext body
    html: htmlBody // html body
  };

var app = http.createServer(function (req, res) {
    // send mail
    smtpTransport.sendMail(mailOptions, function(error, info) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        if (error) {
            console.log('error', error)
            res.write('Error');
            res.end();
        } 
        console.log('Message %s sent: %s', info.messageId, info.response);
        smtpTransport.close();
        res.write('Email sent');
        res.end();
    });
}).listen(3000); 
吴松
2023-03-14

仔细检查您的凭据,并且您需要允许gmail中的应用程序不太安全。

1) 转到https://myaccount.google.com/lesssecureapps

2)启用不太安全的应用程序选项

 类似资料:
  • 我试图通过节点邮件发送电子邮件,但无法发送电子邮件,并显示以下错误。 我使用的是nodemailer文档中所示的确切代码。 这是我正在使用的服务器端代码。 这在几天前运行良好,在其他邮件客户端和gmail上也运行良好,因此我认为这个问题可能与gmail帐户的任何安全设置有关。

  • 这是我用的密码。 早些时候,我把邮件发送到一个Gmail地址,所以“service”是“Gmail”,它工作得很好。 对于“office@company.ro”这样的地址,我应该传递什么作为“服务”?

  • 下面是我为nodemailer做的函数- 在这里,我已经在.env文件中给出了电子邮件id和密码,我正在下面使用这个功能。客户将从我的id获得一封邮件到他的电子邮件id中。 密码是正确的。但我遇到了这个错误- 错误:无效的登录名:534-5.7.9需要应用程序特定的密码。了解更多信息,请访问534 5.7.9 https://support.google.com/mail/?p=invalidse

  • 我已经创建了一个帐户与sendInBlue,并导入了nodemailer和nodemailer-sendinblue-transport到我的项目中,我正在尝试发送一个简单的确认电子邮件。下面的代码是我如何尝试安装的: 下面的代码是我的注册方法中负责发送确认邮件的一节: 当我运行我的程序时,注册过程成功,但抛出以下错误,而不是发送电子邮件: 错误:在数据库中找不到键(失败,401) 我读到他们的v

  • 我已经在本地()设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试该服务器是否真的可以发送电子邮件。 如果我正确理解SMTP选项(如果我错了,请纠正我),我可以尝试从我的服务器直接发送电子邮件到某人的电子邮件帐户,或者我可以发送电子邮件,仍然使用node.js,但通过一个实际的电子邮件帐户(在本例中是我的个人Gmail帐户),即使用SMTP。此选项要求我通过Nod

  • 问题内容: 我已经在本地()设置了一个基本的NodeJS服务器(使用nodemailer模块),以便可以测试该服务器是否可以实际发送电子邮件。 如果我正确理解SMTP选项(如果我输入错了,请更正我),我可以尝试将服务器中的电子邮件 直接 发送到某人的电子邮件帐户, 或者 可以仍然使用Node.js来发送电子邮件,但是 通过实际的电子邮件帐户 (在本例中为我的个人Gmail帐户),即使用SMTP。此