以下是通过忘记密码命中发送电子邮件的代码,这是无效的,但是如果相同的代码通过文件运行它正在发送电子邮件..我知道我在回调使用方面做错了什么。 / p>
以下代码正在运行但不发送电子邮件 -
app.post('/forget', function(req, res){
var userEmail = req.body.email;
User.findOne({email: userEmail}, function(err, user){
if (err) {
res.send({"message": "Wrong!", "err": err, "status_code": "500"});
}
else{
var password = "12345";
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "XXXXX@gmail.com",
pass: "YYYYY"
}
});
var mailOptions = {
from: "Team | <XXXXX@gmail.com>",
to: user.email,
subject: "Password Change",
text: "Hello world",
html: "Your password changed successfully."+ "Your new password is "+ "<style='color: red;'>"+ password +"</style>" // html body
};
console.log(mailOptions);
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
});
user.password = password;
user.save(function(err){
if (err) return handleError(err);
else return res.send({"message": "success", "data": user, "status_code": "200"});
});
}
});
});
它正在抛出错误 -
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
仅供参考 - 我在代码上方使用var nodemailer = require("nodemailer");
,但事实并非如此。
工作代码 -
现在,如果我将相同的代码放在一个文件中并通过node mail.js
命令运行,那么邮件就会成功发送。
如果有任何
,请告诉我这里的错误工作代码(只是一个重复的代码)
var password = "12345";
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "XXXXX@gmail.com",
pass: "YYYYY"
}
});
var mailOptions = {
from: "Team | <XXXXX@gmail.com>",
to: user.email,
subject: "Password Change",
text: "Hello world",
html: "Your password changed successfully."+ "Your new password is "+ "<style='color: red;'>"+ password +"</style>" // html body
};
console.log(mailOptions);
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
});
答案 0 :(得分:1)
这不是防火墙问题。我使用linemanjs
通过代理命中api,节点邮件程序不支持当前代理。
Nodemailer不支持代理,目前还没有计划 为这些添加任何支持,抱歉。
参考 - Nodemailer Issue With Proxy
作为修复,我在我的clientapp(lineman应用程序)上安装了nodemailer模块,并将数据发送到另一个应用程序,并根据我通过nodemailer发送电子邮件接收令牌。