express实现发送邮件重置密码功能代码
时间: 2024-05-17 14:17:37 浏览: 172
forgetpassword-and-email-verification-mern-
首先,你需要安装 `nodemailer` 和 `dotenv` 模块。
1. 创建 `.env` 文件并添加以下内容:
```
EMAIL_USER=your_email_address
EMAIL_PASSWORD=your_email_password
```
2. 在你的 Express 项目中创建一个 `reset-password.js` 文件,其中包含以下代码:
```javascript
require('dotenv').config();
const nodemailer = require('nodemailer');
const router = require('express').Router();
// 创建邮件传输对象
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASSWORD,
},
});
// 处理发送邮件的 POST 请求
router.post('/reset-password', (req, res) => {
const { email } = req.body;
// 创建邮件内容
const mailOptions = {
from: process.env.EMAIL_USER,
to: email,
subject: 'Reset your password',
text: 'Click the following link to reset your password:',
html: `<p>Click the following link to reset your password:</p><a href="http://yourwebsite.com/reset-password/${token}">Reset Password</a>`,
};
// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error(error);
res.status(500).send('Error sending email');
} else {
console.log('Email sent: ' + info.response);
res.status(200).send('Email sent successfully');
}
});
});
module.exports = router;
```
请注意,上面的代码中的 `http://yourwebsite.com/reset-password/${token}` 应该替换为你的实际网站地址和生成的重置密码 token。
3. 在你的 Express 应用程序中,使用以下代码将此路由添加到你的应用程序中:
```javascript
const resetPasswordRouter = require('./reset-password');
app.use('/', resetPasswordRouter);
```
现在,当用户请求重置密码时,你将能够通过发送电子邮件来重置他们的密码。
阅读全文