@@ -1,34 +1,41 @@
 | 
			
		||||
import axios from 'axios';
 | 
			
		||||
import { config } from './config';
 | 
			
		||||
import { MailSendingError } 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 {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The class's default constructor.
 | 
			
		||||
     * Creates the transporter and tests the connection.
 | 
			
		||||
     */
 | 
			
		||||
    constructor() {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    public static base: string = config.mailer_url;
 | 
			
		||||
    public static key: string = config.mailer_key;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Function for sending a test mail from the test mail template.
 | 
			
		||||
     * @param to_address The address the mail will be sent to. Should always get pulled from a user object.
 | 
			
		||||
     * @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) {
 | 
			
		||||
 | 
			
		||||
    public static async sendResetMail(to_address: string, token: string, locale: string = "en") {
 | 
			
		||||
        try {
 | 
			
		||||
            await axios.post(`${Mailer.base}/reset?locale=${locale}&key=${Mailer.key}`, {
 | 
			
		||||
                address: to_address,
 | 
			
		||||
                resetKey: token
 | 
			
		||||
            });
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            throw new MailSendingError();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Function for sending a test mail from the test mail template.
 | 
			
		||||
     * @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) {
 | 
			
		||||
 | 
			
		||||
    public static async sendTestMail(locale: string = "en") {
 | 
			
		||||
        try {
 | 
			
		||||
            await axios.post(`${Mailer.base}/test?locale=${locale}&key=${Mailer.key}`);
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            throw new MailSendingError();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user