diff --git a/src/mailer.ts b/src/mailer.ts index d1f31c2..ea3a775 100644 --- a/src/mailer.ts +++ b/src/mailer.ts @@ -1,36 +1,17 @@ -import fs from "fs"; -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'; /** * This class is responsible for all things mail sending. * This uses the mail emplates from src/static/mail_templates */ export class Mailer { - private transport: Mail; /** * The class's default constructor. * Creates the transporter and tests the connection. */ 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(); - } - }); } /** @@ -39,17 +20,7 @@ export class Mailer { * @param token The requested password reset token - will be combined with the app_url to generate a password reset link. */ public async sendResetMail(to_address: string, token: string) { - const reset_link = `${config.app_url}/reset/${(Buffer.from(token)).toString("base64")}` - const body_html = fs.readFileSync(__dirname + '/static/mail_templates/pw-reset.html', { encoding: 'utf8' }).replace("{{reset_link}}", reset_link).replace("{{recipient_mail}}", to_address).replace("{{copyright_owner}}", "LfK!").replace("{{link_imprint}}", `${config.app_url}/imprint`).replace("{{link_privacy}}", `${config.app_url}/privacy`); - const body_txt = fs.readFileSync(__dirname + '/static/mail_templates/pw-reset.html', { encoding: 'utf8' }).replace("{{reset_link}}", reset_link).replace("{{recipient_mail}}", to_address).replace("{{copyright_owner}}", "LfK!").replace("{{link_imprint}}", `${config.app_url}/imprint`).replace("{{link_privacy}}", `${config.app_url}/privacy`); - const mail: MailOptions = { - to: to_address, - subject: "LfK! Password Reset", - text: body_txt, - html: body_html - }; - await this.sendMail(mail); } /** @@ -57,23 +28,7 @@ export class Mailer { * @param to_address The address the test mail will be sent to - this is the configured from-address by default. */ public async sendTestMail(to_address: string = config.mail_from) { - const body_html = fs.readFileSync(__dirname + '/static/mail_templates/test.html', { encoding: 'utf8' }).replace("{{recipient_mail}}", to_address).replace("{{copyright_owner}}", "LfK!").replace("{{link_imprint}}", `${config.app_url}/imprint`).replace("{{link_privacy}}", `${config.app_url}/privacy`); - const body_txt = fs.readFileSync(__dirname + '/static/mail_templates/test.txt', { encoding: 'utf8' }).replace("{{recipient_mail}}", to_address).replace("{{copyright_owner}}", "LfK!").replace("{{link_imprint}}", `${config.app_url}/imprint`).replace("{{link_privacy}}", `${config.app_url}/privacy`); - const mail: MailOptions = { - to: to_address, - subject: "LfK! Test Mail", - text: body_txt, - html: body_html - }; - await this.sendMail(mail); + } - /** - * Wrapper function for sending a mail via this object's transporter. - * @param mail MailOptions object containing the - */ - public async sendMail(mail: MailOptions) { - mail.from = config.mail_from; - await this.transport.sendMail(mail); - } }