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_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')
]
}
});
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": "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);
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.