Send emails through Postmark using GruntJS. You can use this to test your email templates.
This plugin requires that you have a Postmark account.
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-postmark --save-dev
After the plugin is installed, it can be enabled in your Gruntfile:
grunt.loadNpmTasks('grunt-postmark');
You'll need to add a config.json
and a secrets.json
per the mailmason
configuration.
Run this task with the grunt postmark
command.
Your server token can be found on your server’s credentials page on Postmark’s app.
Type: String
This is the from address you are using to send the email. This must be a confirmed address that's set up on Postmark’s sender signatures.
Type: String
The address you’re sending to.
Type: String
Type: String
grunt.initConfig({
postmark: {
email: {
serverToken: 'POSTMARK_API_TEST',
from: '[email protected]',
to: '[email protected]',
subject: 'Yo',
src: ['test/email.html']
}
}
});
Options specified through a target will always take precedence over global options.
grunt.initConfig({
postmark: {
options: {
serverToken: 'POSTMARK_API_TEST',
from: '[email protected]',
to: '[email protected]',
subject: 'Yo'
},
email: {
to: '[email protected]',
src: ['test/email.html']
},
digest: {
subject: 'Yo',
src: ['test/email.html', 'test/email2.html']
}
}
});
Run this task with the grunt postmark-templates
command.
The postmark-templates
task is an alias of the postmark-templates-from-targets
task which is itself a two stepped task – postmark-templates-upload
followed by postmark-templates-output
.
postmark-templates
(postmark-templates-from-targets
) is intended for programmatic usage from other grunt tasks.
The name of your template.
Type: String
The subject line of your template.
Type: String
A path to the generated HTML for your template. Not used if htmlBody
is specified.
Type: String
A path to the generated plain text for your template. Not used if textBody
is specified.
Type: String
The generated HTML content of your template. Not required if htmlSrc
is specified.
Type: String
The generated plain text content of your template. Not required if textSrc
is specified.
Type: String
Your server token can be found on your server’s credentials page on Postmark’s app.
Type: String
This is the name of a temporary grunt task configuration property used to communicate the upload results between postmark-templates-upload
and postmark-templates-output
without having to write a temporary file. This should be the same value as ephemeralUploadResultsProperty
for postmark-templates-output
.
Type: String
The name of a file to output the results of the upload to Postmark.
Type: String
If true
, do not export htmlBody
, htmlSrc
, textBody
or textSrc
in the specified outputFile
.
Type: Boolean
This is the name of a temporary grunt task configuration property used to communicate the upload results between postmark-templates-upload
and postmark-templates-output
without having to write a temporary file. This should be the same value as ephemeralUploadResultsProperty
for postmark-templates-upload
.
Type: String
grunt.initConfig({
'postmark-templates-upload': {
options: {
serverToken: 'POSTMARK_API_TEST',
ephemeralUploadResultsProperty: 'temp'
},
test_email: {
name: 'testing-postmark-templates-js1',
subject: 'Testing grunt-postmark-templates',
htmlSrc: 'test/email.html',
textSrc: 'test/email.txt'
},
test_email_inline_body: {
name: 'testing-postmark-templates-js3',
subject: 'Testing grunt-postmark-templates (inline body)',
htmlBody: '<html><body><h1>Another email test</h1></body></html>',
textBody: 'Hello from grunt-postmark-templates\n'
}
},
'postmark-templates-output': {
options: {
cleanOutput: true,
outputFile: 'templates.json',
ephemeralUploadResultsProperty: 'temp'
}
}
});
Run this task with the grunt postmark-templates-from-file
command.
The postmark-templates-from-file
task invokes the postmark-templates
task with targets read from a JSON file (via postmark-templates-parse
).
This task is intended for standalone, manual usage.
The name of a file that specifies templates for uploading to Postmark. These templates take the same shape as defined by postmark-templates-upload
. This should usually be the same value as outputFile
for postmark-templates-output
.
Type: String
In your Gruntfile
:
grunt.initConfig({
'postmark-templates-parse': {
options: {
inputFile: 'templates.json'
}
},
'postmark-templates-upload': {
options: {
serverToken: 'POSTMARK_API_TEST',
ephemeralUploadResultsProperty: 'temp'
}
},
'postmark-templates-output': {
options: {
cleanOutput: true,
outputFile: 'templates.json',
ephemeralUploadResultsProperty: 'temp'
}
}
});
In the file specified by inputFile
, in this case, templates.json
:
{
"test_email": {
"name": "testing-postmark-templates-js1",
"subject": "Testing grunt-postmark-templates",
"htmlSrc": "test/email.html",
"textSrc": "test/email.txt"
},
"test_email_again": {
"name": "testing-postmark-templates-js2",
"subject": "Testing grunt-postmark-templates (again)",
"htmlSrc": "test/email.html",
"textSrc": "test/email.txt"
},
"test_email_inline_body": {
"name": "testing-postmark-templates-js3",
"subject": "Testing grunt-postmark-templates (inline body)",
"htmlBody": "<html><body><h1>Another email test</h1></body></html>",
"textBody": "Hello from grunt-postmark-templates\n"
}
}