提问者:小点点

使用nodemailer通过Node.js发送电子邮件无效


我已经在本地(http://localhost:8080)设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试该服务器是否真的可以发送电子邮件。

如果我正确理解SMTP选项(如果我错了,请纠正我),我可以尝试从我的服务器直接发送电子邮件到某人的电子邮件帐户,或者我可以发送电子邮件,仍然使用node.js,但通过一个实际的电子邮件帐户(在本例中是我的个人Gmail帐户),即使用SMTP。此选项要求我通过NodeJS远程登录到该acount。

因此,在下面的服务器中,我实际上试图使用NodeJs从我的个人电子邮件帐户向我的个人电子邮件帐户发送电子邮件。

下面是我的简单服务器:

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport("SMTP", {
    service: 'Gmail',
    auth: {
        user: '*my personal Gmail address*',
        pass: '*my personal Gmail password*'
    }
});

var http = require('http');
var httpServer = http.createServer(function (request, response)
{
    transporter.sendMail({
       from: '*my personal Gmail address*',
       to: '*my personal Gmail address*',
       subject: 'hello world!',
       text: 'hello world!'
    });
}).listen(8080);

然而,这并不奏效。我收到谷歌的一封邮件说:

谷歌帐户:登录尝试被阻止如果是您,您可以切换到谷歌的应用程序,如Gmail,以访问您的帐户(推荐)或更改您的设置,在https://www.Google.com/settings/security/lesssecureapps,使您的帐户不再受现代安全标准的保护。

我在nodemailer GitHub页面上找不到上述问题的解决方案。有人有解决方案/建议吗?

谢谢!:-)


共1个答案

匿名用户

答案就在谷歌的消息中。

>

  • 请访问:https://www.google.com/settings/security/lessSecureApps

    将“访问安全性较低的应用程序”设置设置为“启用

    针对问题的第二部分,并针对

    实际上,我只是按照nodemailer github页面中的步骤操作,所以代码中没有错误

    我将向您介绍nodemailer github页面,下面是一段代码:

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

    它与您的代码略有不同,因为您有:nodeMailer.createTransport(“SMTP”。删除SMTP参数,它就可以工作了(刚刚测试过)。另外,为什么要将它封装在http服务器中?以下工作:

    var nodemailer = require('nodemailer');
    var transporter = nodemailer.createTransport({
        service: 'Gmail',
        auth: {
            user: 'xxx',
            pass: 'xxx'
        }
    });
    
    console.log('created');
    transporter.sendMail({
    from: 'xxx@gmail.com',
      to: 'xxx@gmail.com',
      subject: 'hello world!',
      text: 'hello world!'
    });