A Postmark API service adapter for FeathersJS
npm install feathers-postmark --save
The feathers-postmark service adapter creates services that send transactional email through Postmark.
Like all Feathers service adapters, the postmark adapter is a function that receives an object as options and returns a class implementing the Feathers service interface.
options{Object}key{String}- Your Postmark API key. Set it toPOSTMARK_API_TESTfor testing purposes. Required.
Once you have passed your Postmark API key in the options, the service is ready to be used in your application:
const postmark = require('feathers-postmark');
const options = {
  key: 'POSTMARK_API_TEST'
};
app.use('messages', postmark(options));
app.service('messages').hooks({
  before: {
    create: [
      // Use hooks in feathers-hooks-common to protect your service from outside access.
      disallow('external')
    ]
  }
});The create method will send the provided data through the Postmark Email API.
data{PostmarkEmail | Array}- Supports any of the options available in the Postmark Email API body format.
If the payload of data is in the format of a PostmarkEmail Object, as shown in the example, below, the sendEmail method of the postmark client will be used.
const message = {
  "From": "[email protected]",
  "To": "[email protected]",
  "Cc": "[email protected]",
  "Bcc": "[email protected]",
  "Subject": "Test",
  "Tag": "Invitation",
  "HtmlBody": "<b>Hello</b>",
  "TextBody": "Hello",
  "ReplyTo": "[email protected]",
  "Headers": [
    {
      "Name": "CUSTOM-HEADER",
      "Value": "value"
    }
  ],
  "TrackOpens": true,
  "TrackLinks": "None",
  "Attachments": [
    {
      "Name": "readme.txt",
      "Content": "dGVzdCBjb250ZW50",
      "ContentType": "text/plain"
    },
    {
      "Name": "report.pdf",
      "Content": "dGVzdCBjb250ZW50",
      "ContentType": "application/octet-stream"
    }
  ]
};
app.service('my-postmark-service').create(message);If your message includes a TemplateId property, the sendEmailWithTemplate method of the postmark client will be used.  The message data can include any of the PostmarkTemplateMessage properties.
If the data passed to create is an array, the data will be passed to the sendEmailBatch method of the postmark client.
Here's an example of a Feathers server that uses feathers-postmark.
const feathers = require('feathers');
const rest = require('feathers-rest');
const hooks = require('feathers-hooks');
const bodyParser = require('body-parser');
const errorHandler = require('feathers-errors/handler');
const postmark = require('feathers-postmark');
// Initialize the application
const app = feathers()
  .configure(rest())
  .configure(hooks())
  // Needed for parsing bodies (login)
  .use(bodyParser.json())
  .use(bodyParser.urlencoded({ extended: true }))
  // Initialize your feathers plugin
  .use('messages', postmark({key: 'POSTMARK_API_TEST'})
  .use(errorHandler());
app.listen(3030);
console.log('Feathers app started on 127.0.0.1:3030');Copyright (c) 2016
Licensed under the MIT license.
