Реализовать почтовое решение в Express nodejs - PullRequest
0 голосов
/ 27 августа 2018

Я создаю 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);
        }
    });
}

Спасибо

...