Я хочу сбросить пароль с помощью nodeMailer.
Вот мой маршрут сообщения: /routes/api/auth.js
router.post('/user', (req, res) => {
const { email } = req.body
User.findOne({ email })
.then(user => {
if (!user) return res.status(400).json({ msg: 'User does not exist' });
jwt.sign(
{ id: user.id },
config.get('jwtSecret'),
{ expiresIn: 3600 },
(err, token) => {
if (err) throw err;
res.json({
token,
user: {
id: user.id,
name: user.name,
email: user.email
}
});
const url = getPasswordResetURL(user, token);
console.log(url);
transporter.sendMail(resetPasswordTemplate(user, url), (err, info) => {
})
}
)
})
});
и мои функции: / modules / mailModule. js
const nodemailer = require('nodemailer');
const config = require('config');
const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: config.get('email'),
pass: config.get('password')
}
})
const getPasswordResetURL = (user, token) =>
`http://localhost:3000/password/reset/${user._id}/${token}`
const resetPasswordTemplate = (user, url) => {
const from = config.get('email')
const to = user.email
const subject = "Password Reset"
const html = `
<p>Hey ${user.name || user.email},</p>
<p>We heard that you lost your password. Sorry about that!</p>
<p>But don’t worry! You can use the following link to reset your password:</p>
<a href=${url}>${url}</a>
<p>If you don’t use this link within 1 hour, it will expire.</p>
`
return { from, to, subject, html }
}
module.exports = { transporter, getPasswordResetURL, resetPasswordTemplate }
и /config/default.json(ofcourse Я удалил личные данные для этого поста)
{
"mongoURI": "atlasClusterLink",
"jwtSecret": "jwtPassword",
"email": "myEmail@gmail.com",
"password": "myPassword"
}
В первом файле, который я сделал
console.log (url)
, чтобы проверить, работает ли смена пароля с помощью URL-адреса и работает ли он, но я не могу отправить это. Я не получаю никаких сообщений. В первый раз, когда я сделал это, я получил сообщение от Google без ответа (критическое предупреждение о безопасности), что кто-то (я) попытался войти в мою учетную запись из приложения не из Google. Я просто хочу отправить этот URL-адрес на некоторые почтовые адреса, и было бы здорово, если бы я мог сделать это с почтовым адресом без ответа. Позже также я планирую использовать dotenv вместо config, но это будет реализовано позже.