node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »

grunt-postmark

grunt-postmark

Built with Grunt

Send emails through Postmark using GruntJS. You can use this to test your email templates.

Getting Started

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.

Postmark task

Run this task with the grunt postmark command.

Options

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

Examples

Options specified through target

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.

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.

postmark-templates-upload Targets

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

postmark-templates-upload Options

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

postmark-templates-output Options

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

Example

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'
    }
  }
});

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.

postmark-templates-parse Options

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

Example

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"
  }
}