{"id":22014639,"url":"https://github.com/hackplan/pomo-mailer","last_synced_at":"2025-03-23T08:42:37.269Z","repository":{"id":21239666,"uuid":"24555041","full_name":"HackPlan/pomo-mailer","owner":"HackPlan","description":"Mail Renderer, Mail Queue, Task Manager","archived":false,"fork":false,"pushed_at":"2016-10-19T09:45:15.000Z","size":57,"stargazers_count":14,"open_issues_count":1,"forks_count":3,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-10-11T01:38:36.913Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.org/package/pomo-mailer","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HackPlan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-28T08:51:22.000Z","updated_at":"2024-07-16T00:27:48.000Z","dependencies_parsed_at":"2022-08-05T11:15:21.332Z","dependency_job_id":null,"html_url":"https://github.com/HackPlan/pomo-mailer","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackPlan%2Fpomo-mailer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackPlan%2Fpomo-mailer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackPlan%2Fpomo-mailer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackPlan%2Fpomo-mailer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HackPlan","download_url":"https://codeload.github.com/HackPlan/pomo-mailer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244460236,"owners_count":20456301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T04:16:34.236Z","updated_at":"2025-03-23T08:42:37.249Z","avatar_url":"https://github.com/HackPlan.png","language":"HTML","readme":"# Pomo Mailer\n\n* Render multi-language mail with jade template.\n* Mail queue based on MongoDB, send mail by local timezone.\n* Manage cyclical task, resume from original progress when terminated.\n* Built-in some useful templates.\n* Mail agent using HTTP API.\n\n```coffee\n{Mailer, Queue, Agent, Task} = require 'pomo-mailer'\n```\n\n## Mailer\n\n```coffee\nmailer = new Mailer\n  server:\n    service: 'Postmark'\n    auth:\n      user: 'postmark-api-token'\n      pass: 'postmark-api-token'\n\n  from: 'Pomotodo \u003crobot@pomotodo.com\u003e'\n\nmailer.sendMail 'action', 'jysperm@gmail.com',\n  title: 'Please confirm your email address'\n  link: 'https://pomotodo.com'\n  action: 'Confirm'\n.then console.log\n.catch console.error\n```\n\n## Queue\n\n```coffee\nqueue = new Queue\n  mailer: mailer\n  mongodb: 'mongodb://localhost/pomo-mailer-test'\n\nqueue.pushMail\n  template: 'billing'\n  address: 'jysperm@gmail.com'\n  locals: generateBilling()\n.then console.log\n.catch console.error\n```\n\n## Agent\n\n```coffee\nagent = new Agent\n  queue: queue\n  users:\n    jysperm: 'pass'\n\napp = express()\napp.use bodyParser.json()\napp.use agent.express()\n```\n\n## Task\n\n```coffee\ntask = new Task\n  name: 'weekly'\n  worker: worker\n  groupBy: -\u003e moment().format 'YYYY-W'\n  nextGroup: -\u003e moment().startOf('week').add(weeks: 1)\n\nworker = (task) -\u003e\n  return Q.Promise (resolve, reject, notify) -\u003e\n    db.accounts.find\n      _id:\n        $gte: task.progress ? null\n    .sort\n      _id: 1\n    .then (accounts) -\u003e\n      async.each accounts, ({_id, email, generateWeekly}) -\u003e\n        notify _id\n        mailer.sendMail 'weekly', email, generateWeekly()\n      .then resolve, reject\n```\n\n## Built-in templates\n\n* `action`\n* `alert`\n* `billing`\n\nSome useful templates converted from [mailgun/transactional-email-templates](https://github.com/mailgun/transactional-email-templates).\n\nCommon fields:\n\n* `title` {String}\n* `detail` {String}\n* `link` {String}\n* `action` {String}\n* `copyright` {String}\n\n* `unsubscribe` {Object}\n\n  * `before` {String}\n  * `link` {String}\n  * `action` {String}\n  * `after` {String}\n\n`alert` fields:\n\n* `alert` {String}\n\n`billing` fields:\n\n* `address` {Array} of {String}\n* `products` {Array}\n\n  * `name` {String}\n  * `price` {String}\n\n* `total` {Object}\n\n  * `name` {String}\n  * `price` {String}\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackplan%2Fpomo-mailer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackplan%2Fpomo-mailer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackplan%2Fpomo-mailer/lists"}