Implemented a basic mailer with reset link sending

ref #118
This commit is contained in:
Nicolai Ort 2021-01-26 17:21:18 +01:00
parent c418603423
commit 637975305f
1 changed files with 38 additions and 1 deletions

View File

@ -1,7 +1,44 @@
import nodemailer from 'nodemailer';
import { MailOptions } from 'nodemailer/lib/json-transport';
import Mail from 'nodemailer/lib/mailer';
import { config } from './config';
import { MailServerConfigError } from './errors/MailErrors';
import { User } from './models/entities/User';
/**
* This class is responsible for all things mail sending.
*/
export class Mailer {
private transport: Mail;
constructor() {
this.transport = nodemailer.createTransport({
host: config.mail_server,
port: config.mail_port,
auth: {
user: config.mail_user,
pass: config.mail_password
}
});
this.transport.verify(function (error, success) {
if (error) {
throw new MailServerConfigError();
}
});
}
public async sendResetMail(user: User, token: String) {
const reset_link = `${config.app_url}/reset/${token}`
const mail: MailOptions = {
to: user.email,
subject: "LfK! Password Reset",
html: `<b>${reset_link}</b>`
};
await this.sendMail(mail);
}
public async sendMail(mail: MailOptions) {
mail.from = config.mail_from;
await this.transport.sendMail(mail);
}
}