Я создаю API, который обрабатывает проверку аккаунта по электронной почте, восстановление пароля и, возможно, другие вещи.
Я хочу создать одно место для отправки писем по всему API.
Я использую nodeMailer.
Моя текущая настройка - это вызов метода в модели пользователя, который отправляет электронную почту EmailVerification.
Я хочу создать шаблон вне модели User, который мог бы отправлять восстановление пароля, подтверждение по электронной почте или другие вещи. В зависимости от параметров, которые я передаю функции.
Моя модель пользователя:
userSchema.methods.generateEmailVerificationToken = function() {
const token = jwt.sign({_id: this._id, role: this.role},
config.get('jwtPrivateKey'));
return token;
};
userSchema.methods.generateAuthToken = function() {
const token = jwt.sign({_id: this._id, role: this.role},
config.get('jwtPrivateKey'));
return token;
};
userSchema.methods.sendEmailVerification = function (user) {
sendMail(user);
};
и это моя функция sendMail:
const nodemailer = require('nodemailer');
module.exports = function sendMail (user) {
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'mymail@gmail.com',
pass: 'mypass'
}
});
const mailOptions = {
from: 'mymail@gmail.com',
to: user.email,
subject: 'Email verification.',
html: `Please click this <a href="www.example.com/email_verif/${user.emailVerificationToken}">link</a> to verify your email`
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
Спасибо