preview-email
Automatically opens your browser to preview Node.js email messages sent with Nodemailer. Made for Lad!
Table of Contents
- Screenshot
- Install
- Usage
- Custom Preview Template and Stylesheets
- Debugging
- Options
- Contributors
- License
Screenshot
Install
npm:
npm install preview-email
yarn:
yarn add preview-email
Usage
NOTE: You should probably just use email-templates directly instead of using this package.
The function previewEmail
returns a Promise
which resolves with a URL. We automatically open the browser to this URL unless you specify options.open
as false
(see Options for more info).
const previewEmail = require('preview-email');
const nodemailer = require('nodemailer');
const transport = nodemailer.createTransport({
jsonTransport: true
});
// <https://nodemailer.com/message/>
const message = {
from: 'niftylettuce+from@gmail.com',
to: 'niftylettuce+to@gmail.com',
subject: 'Hello world',
html: '<p>Hello world</p>',
text: 'Hello world',
attachments: [ { filename: 'hello-world.txt', content: 'Hello world' } ]
};
// note that `attachments` will not be parsed unless you use
// `previewEmail` with the results of `transport.sendMail`
// e.g. `previewEmail(JSON.parse(res.message));` where `res`
// is `const res = await transport.sendMail(message);`
previewEmail(message).then(console.log).catch(console.error);
transport.sendMail(message).then(console.log).catch(console.error);
Custom Preview Template and Stylesheets
Using the options.template
object, you can define your own template for rendering (e.g. get inspiration from template.pug and write your own!):
const path = require('path');
// ...
previewEmail(message, { template: path.join(__dirname, 'my-custom-preview-template.pug') })
.then(console.log)
.catch(console.error);
Debugging
Thanks to the debug package, you can easily debug output from preview-email
:
DEBUG=preview-email node app.js
Options
-
message
(Object) - a Nodemailer message configuration object -
options
(Object) - an object with the following two properties:-
id
(String) - a unique ID for the file name created for the preview indir
(defaults touuid.v4()
from uuid) -
dir
(String) - a path to a directory for saving the generated email previews (defaults toos.tmpdir()
, see os docs for more insight) -
open
(Object or Boolean) - an options object that is passed to open (defaults to{ wait: false }
) - if set tofalse
then it will not open the email automatically in the browser using open, and if set totrue
then it will default to{ wait: false }
-
template
(String) - a file path to apug
template file (defaults to preview-email's template.pug by default) - this is where you can pass a custom template for rendering email previews, e.g. your own stylesheet -
urlTransform
(Function (path) => url) - a function to build preview url from file path (defaults to(path) => 'file://[file path]'
) - this is where you can customize the opened path to handle WSL to Windows transformation or build a http url ifdir
is served.
-
Contributors
Name | Website |
---|---|
Nick Baugh | http://niftylettuce.com/ |