我不知道我缺少什么,我使用Nodemailer示例:
var nodemailer = require("nodemailer");
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "gmail.user@gmail.com",
pass: "userpass"
}
});
// setup e-mail data with unicode symbols
var mailOptions = {
from: "Fred Foo ✔ <foo@blurdybloop.com>", // sender address
to: "bar@blurdybloop.com, baz@blurdybloop.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world ✔", // plaintext body
html: "<b>Hello world ✔</b>" // html body
}
// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
// if you don't want to use this transport object anymore, uncomment following line
//smtpTransport.close(); // shut down the connection pool, no more messages
});
我刚刚更改了用户并将auth传递给我的gmail帐户信息(也尝试了他们的值),然后我将“更改”电子邮件地址更改为我的电子邮件地址。我明白了:
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
我错过了什么?我没有在文档中看到任何说明我需要做更多的事情,所以为什么它不起作用?提前谢谢。
答案 0 :(得分:6)
这是一个防火墙问题。事实证明代码没有任何问题,我只是不明白错误信息的含义。
答案 1 :(得分:3)
以下步骤:
登录Gmail帐户。
在设置标签中启用pop3
定义电子邮件选项并发送
var mailOptions = {
host: 'smtp.gmail.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'gmail_account@gmail.com',
pass: 'password'
}
}
mailer = nodemailer.createTransport(mailOptions);
mailer.sendMail({
....
}, function(err, response) {
if (err) {
console.log(err);
}
console.log(response);
});
希望这个区块代码可以帮助您。
答案 2 :(得分:2)
我还使用gmail帐户发送电子邮件,您可能需要Google提供的特定于应用程序的密码才能让nodemailer正常运行。
答案 3 :(得分:0)
ECONNREFUSED表示这是某种连接或防火墙问题。
您是否可以使用同一台计算机上的任何其他应用程序连接到smtp.gmail.com端口465,例如使用openssl?
openssl s_client -connect smtp.gmail.com:465
答案 4 :(得分:0)
如果您使用新的nodemailer版本
nodemailer.createTransport({
host,
port,
secure:,
auth:{
user,
pass
}
})
答案 5 :(得分:0)
就我而言,我只需要禁用我的反病毒软件Avast。
要在avast上添加白名单,请执行以下操作:
这些步骤可能会因您的Avast版本(包括此处使用的IP)而异
1)打开Avast,转到:菜单->设置。 (位于右上角)
2)转到“常规”标签->“例外”->“添加例外”
希望有帮助。
答案 6 :(得分:0)
实际的问题解决方法是您需要放置服务。如果您使用环境变量
var transporter = nodemailer.createTransport({
service: process.env.EMAIL_SERVICE,
auth: {
user:process.env.EMAIL_USER,
pass:process.env.EMAIL_PASSWORD
}
})
答案 7 :(得分:0)
要阻止防火墙发送电子邮件,您需要允许端口或禁用所有端口。
允许特定端口:
<script type="text/javascript">
var term = "my text";
$('#test').html(function () {
return $(this).html().replace(new RegExp(term + "(?=[^>]*<)","ig"), "<mark>$&</mark>");
});
</script>
禁用防火墙
$ sudo ufw allow 587