vlmail

1.5.0 • Public • Published

vlmail

Simple mail service for vlsuite using nodemailer and Gmail. Does not contain a queue / spooler.

Setup

Set env variables or pass values to Mailer constructor.

Variable Variable Name Use Example
MAIL_ADDRESS address Specifies gmail address hello@example.com
MAIL_PASSWORD password Authenticates gmail account hello1234
MAIL_NAME name  Application name for sender Hello Application
MAIL_ACTION_BACKGROUND actionBackground  Button Background Color (default: #222) #007afa
MAIL_ACTION_COLOR actionColor  Button Text Color (default: #fff) #ffffff

Usage

const mailer = new Mailer();

const mail = new Mail(
    "Hello Email",
    "This is an example email!"
);

mail.addAction("View Page!", "http://example.com"); // links must be an absolute url

mailer.send(mail);

Or as inline

new Mailer().send(new Mail("Hello Mail", "This is an example email!").addAction("View Page!", "http://example.com"));

Template

Overwrite the mail template

Mail.template = content => return `<div style="background: red">Epic Mail: ${content}</div>`;

or create subclasses for custom content modifications

class OrderMail extends Mail {
    constructor(public order: Order, subject: string, content: string) {
        this.addAction("View Order", `http://example.com/orders/${order.id}`);

        super(subject, content);
    }

    template(content) {
        return `
            <div style="margin-bottom: 1em; color: blue">There is a new message about your order #${order.id}</div>

            ${super.template(content)}
        `;
    }
}

or custom mail classes

class PasswordResetMail extends Mail {
    constructor(public user: User, resetKey: string) {
        this.addAction("Reset password", `http://example.com/reset-password/${resetKey}`);

        super("Password reset", `You requested a password reset for ${user.username}. Click the button below to reset the password`);
    }
}

Readme

Keywords

none

Package Sidebar

Install

npm i vlmail

Weekly Downloads

1

Version

1.5.0

License

GPL-3.0-only

Unpacked Size

15 kB

Total Files

16

Last publish

Collaborators

  • levvij