Send emails through Postmark using GruntJS
npm install grunt-postmark
> 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:
``shell`
npm install grunt-postmark --save-dev
After the plugin is installed, it can be enabled in your Gruntfile:
`js`
grunt.loadNpmTasks('grunt-postmark');
You'll need to add a config.json and a secrets.json per the mailmason configuration.
command._$3
#### serverToken
Your server token can be found on your server’s credentials page on Postmark’s app.
Type:
String
#### from
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
#### to
The address you’re sending to.
Type:
String
#### subject
Type:
String
$3
#### Options specified through target
`javascript
grunt.initConfig({
postmark: {
email: {
serverToken: 'POSTMARK_API_TEST',
from: 'you@youremail.com',
to: 'you@youremail.com',
subject: 'Yo',
src: ['test/email.html']
}
}
});
`#### Specify options through targets or globally
Options specified through a target will always take precedence over global options.
`javascript
grunt.initConfig({
postmark: {
options: {
serverToken: 'POSTMARK_API_TEST',
from: 'you@youremail.com',
to: 'you@youremail.com',
subject: 'Yo'
},
email: {
to: 'joe@youremail.com',
src: ['test/email.html']
},
digest: {
subject: 'Yo',
src: ['test/email.html', 'test/email2.html']
}
}
});
`Postmark templates task
_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.$3
#### name
The name of your template.
Type:
String
#### subject
The subject line of your template.
Type:
String#### htmlSrc
A path to the generated HTML for your template. Not used if
htmlBody is specified.Type:
String
#### textSrc
A path to the generated plain text for your template. Not used if
textBody is specified.Type:
String#### htmlBody
The generated HTML content of your template. Not required if
htmlSrc is specified.Type:
String
#### textBody
The generated plain text content of your template. Not required if
textSrc is specified.Type:
String
$3
#### serverToken
Your server token can be found on your server’s credentials page on Postmark’s app.
Type:
String
#### ephemeralUploadResultsProperty
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
$3
#### outputFile
The name of a file to output the results of the upload to Postmark.
Type:
String
#### cleanOutput
If
true, do not export htmlBody, htmlSrc, textBody or textSrc in the specified outputFile.Type:
Boolean
#### ephemeralUploadResultsProperty
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
$3
`javascript
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: 'Another email test
',
textBody: 'Hello from grunt-postmark-templates\n'
}
},
'postmark-templates-output': {
options: {
cleanOutput: true,
outputFile: 'templates.json',
ephemeralUploadResultsProperty: 'temp'
}
}
});
`Postmark templates (from file) task
_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.
$3
#### inputFile
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
$3
In your
Gruntfile:`javascript
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:`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": "Another email test
",
"textBody": "Hello from grunt-postmark-templates\n"
}
}
``