node.js - 无法通过节点邮件程序发送邮件。错误:在端口 25 处连接 ECONNREFUSED"
问题描述
每次我提出忘记密码请求时,它都会给我这个错误,并且邮件永远不会发送到 Mailtrap。
Nodemailer 设置 这是我所做的基本节点邮件设置。
端口 = 25
const nodemailer = require('nodemailer');
const sendEmail = async (options) => {
// 1) Create a Transporter
const transporter = nodemailer.createTransport({
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_PORT,
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD,
},
});
// 2) Define the email Options
const mailOptions = {
from: 'Sachin Yadav <sachin.yadav@gmail.com',
to: options.email,
subject: options.subject,
text: options.text,
};
// 3) Send the email
await transporter.sendMail(mailOptions);
};
忘记密码功能
catchAsync只是一个包装函数,它的创建只是为了分别捕获异步错误。它返回传入的异步函数,并使用 req、res 和 next 参数调用它。
exports.forgotPassword = catchAsync(async (req, res, next) => {
// 1) Get user based on posted email
const user = await User.findOne({ email: req.body.email });
if (!user)
return next(
new AppError('No user with that email. Please try again!', 404)
);
// 2) Generate Random
const resetToken = user.createPasswordResetToken();
await user.save({ validateBeforeSave: false });
// 3) Send back the token on email
const resetURL = `${req.protocol}://${req.get('host')}/api/v1/users/resetPassword/${resetToken})}`;
const message = `Forgot your password? Submit a PATCH request with your new password and passwordConfirm to : ${resetURL}`;
// Send Email
try {
await sendEmail({
email: user.email,
subject: 'Password reset link (Valid for 10mins)',
message,
});
res.status(200).json({
status: 'success',
message: 'Token send',
});
// Err
} catch (err) {
// Set back the token and expire time
user.createPasswordResetToken = undefined;
user.passwordResetExpires = undefined;
await user.save({ validateBeforeSave: false });
return next(
new AppError(`There was an error sending the email ${err.message}`, 500)
);
}
});
解决方案
推荐阅读
- reactjs - 用firestore反应material-ui deafultValue异步问题
- flutter - 在 vscode 中,如何在一个 launch.json 中有多个颤振目标?
- python - 在 python 中打开 .pickle 文件时出现问题
- c++ - 函数将每个单词与字符串分开并将它们放入向量中,而不使用 auto 关键字?
- python-3.x - 无插值的不规则间隔数据的热图
- python - Python Eel:“拒绝访问”
- font-face - 图标字体 - WOFF2 在某些设备上显示正方形 ☒
- javascript - ReferenceError:在初始化之前无法访问“变量”
- phpmailer - 从移动应用程序回复时,phpmailer回复不起作用
- javascript - 客户端(浏览器)上的会话令牌过期检测