vlmail
v1.5.0
Published
Simple mail service for vlsuite using `nodemailer` and Gmail. Does not contain a queue / spooler.
Downloads
2
Readme
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 | [email protected]
|
| 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`);
}
}