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`);
}
}