Pomo Mailer
- Render multi-language mail with jade template.
- Mail queue based on MongoDB, send mail by local timezone.
- Manage cyclical task, resume from original progress when terminated.
- Built-in some useful templates.
- Mail agent using HTTP API.
{Mailer, Queue, Agent, Task} = require 'pomo-mailer'
Mailer
mailer = new Mailer
server:
service: 'Postmark'
auth:
user: 'postmark-api-token'
pass: 'postmark-api-token'
from: 'Pomotodo <robot@pomotodo.com>'
mailer.sendMail 'action', 'jysperm@gmail.com',
title: 'Please confirm your email address'
link: 'https://pomotodo.com'
action: 'Confirm'
.then console.log
.catch console.error
Queue
queue = new Queue
mailer: mailer
mongodb: 'mongodb://localhost/pomo-mailer-test'
queue.pushMail
template: 'billing'
address: 'jysperm@gmail.com'
locals: generateBilling()
.then console.log
.catch console.error
Agent
agent = new Agent
queue: queue
users:
jysperm: 'pass'
app = express()
app.use bodyParser.json()
app.use agent.express()
Task
task = new Task
name: 'weekly'
worker: worker
groupBy: -> moment().format 'YYYY-W'
nextGroup: -> moment().startOf('week').add(weeks: 1)
worker = (task) ->
return Q.Promise (resolve, reject, notify) ->
db.accounts.find
_id:
$gte: task.progress ? null
.sort
_id: 1
.then (accounts) ->
async.each accounts, ({_id, email, generateWeekly}) ->
notify _id
mailer.sendMail 'weekly', email, generateWeekly()
.then resolve, reject
Built-in templates
Some useful templates converted from mailgun/transactional-email-templates.
Common fields:
-
title
{String}
-
detail
{String}
-
link
{String}
-
action
{String}
-
copyright
{String}
-
unsubscribe
{Object}
before
{String}link
{String}action
{String}after
{String}
alert
fields:
billing
fields: