Awesome
feathers-postmark
A Postmark API service adapter for FeathersJS
Installation
npm install feathers-postmark --save
Documentation
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_TEST
for testing purposes. Required.
Once you have passed your Postmark API key
in the options
, the service is ready to be use
d 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.