0.3.0 • Published 9 years ago

pomo-mailer v0.3.0

Weekly downloads
28
License
MIT
Repository
github
Last release
9 years ago

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

  • action
  • alert
  • billing

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:

  • alert {String}

billing fields:

  • address {Array} of {String}
  • products {Array}

    • name {String}
    • price {String}
  • total {Object}

    • name {String}
    • price {String}
0.3.0

9 years ago

0.2.11

9 years ago

0.2.10

9 years ago

0.2.9

9 years ago

0.2.8

10 years ago

0.2.7

10 years ago

0.2.6

10 years ago

0.2.5

10 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

11 years ago

0.1.4

11 years ago

0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago