feathers-postmark v1.0.0
feathers-postmark
A Postmark API service adapter for FeathersJS
Installation
npm install feathers-postmark --saveDocumentation
The feathers-postmark service adapter creates services that send transactional email through Postmark.
Configuration
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.
postmark(options)
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')
]
}
});service.create(data[, params]) -> promise
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.
Send a single message
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": "sender@example.com",
"To": "receiver@example.com",
"Cc": "copied@example.com",
"Bcc": "blank-copied@example.com",
"Subject": "Test",
"Tag": "Invitation",
"HtmlBody": "<b>Hello</b>",
"TextBody": "Hello",
"ReplyTo": "reply@example.com",
"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);Send a Templated 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.
Send a Batch Message
If the data passed to create is an array, the data will be passed to the sendEmailBatch method of the postmark client.
Complete Example
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');License
Copyright (c) 2016
Licensed under the MIT license.
