当前位置: 首页 > 面试题库 >

使用nodemailer通过Node.js发送电子邮件不起作用

朱经武
2023-03-14
问题内容

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

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

因此,在下面的服务器中,我实际上正在尝试使用NodeJ将电子邮件从我的个人电子邮件帐户发送到我的个人电子邮件帐户。

这是我的简单服务器:

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);

但是,它不起作用。我收到谷歌的电子邮件说:

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

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

谢谢!:-)


问题答案:

答案在Google的消息中。

  • 前往: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!'
});


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

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

  • 我在ASP. Net Core中工作,并尝试从gmail使用smtp客户端发送电子邮件。有以下代码,但不起作用也看过以下帖子,但不起作用http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/ 它会跟踪错误 系统NotSupportedException:SMTP服务器不支持身份验证

  • 我在使用我的公司交换服务器通过Javamail发送电子邮件时遇到了一些问题。我们有一个应用程序通过gmail服务器发送电子邮件没有任何问题,但对于Google策略的一些更改,我们希望使用公司服务器来完成这项工作。我确信会话属性中的问题,但我无法找到使其工作的方法 这是显示日志的错误 javax.mail.MessagingException:无法连接到SMTP主机:mail.company.com

  • 问题内容: 我有,并且在我的Rails应用程序中。 我试图接管发送电子邮件。但没有运气。我遵循了这样的指示: 添加到模型: 创建一个初始化程序: 我尚未在邮件中进行任何自定义修改 这是创建新帐户时控制台中显示的内容: 我的Sidekiq日志没有显示任何内容。 有任何想法吗? 问题答案: 设置。

  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项