Skip to content

feathersjs-ecosystem/feathers-mailer

Repository files navigation

feathers-mailer

Node.js CI Dependency Status Download Status

Feathers mailer service using nodemailer

Installation

npm install feathers-mailer --save

If using a transport plugin, install the respective module.

API

const mailer = require('feathers-mailer');

app.use('/emails', mailer(transport, defaults))

  • transport can be either SMTP options or a transport plugin with associated options.
  • defaults is an object that defines default values for mail options.

service.create(body, params)

service.create is a thin wrapper for transporter.sendMail, accepting body and returning a promise.

See here for possible fields of body.

Example with SMTP (ethereal)

const mailer = require('feathers-mailer');
const nodemailer = require('nodemailer');

(async function (app) {
  const account = await nodemailer.createTestAccount(); // internet required

  const transporter = {
    host: account.smtp.host,
    port: account.smtp.port,
    secure: account.smtp.secure, // 487 only
    requireTLS: true,
    auth: {
      user: account.user, // generated ethereal user
      pass: account.pass // generated ethereal password
    }
  };

  // Register service and setting default From Email
  app.use('mailer', mailer(transporter, { from: account.user }));

  // Use the service
  const email = {
     to: '[email protected]',
     subject: 'SMTP test',
     html: 'This is the email body'
  };

  await app.service('mailer').create(email)
  console.log(`Preview URL: ${nodemailer.getTestMessageUrl(info)}`)
})(app)

Example with Mandrill

const mailer = require('feathers-mailer');
const mandrill = require('nodemailer-mandrill-transport');

// Register the service, see below for an example
app.use('/mailer', mailer(mandrill({
  auth: {
    apiKey: process.env.MANDRILL_API_KEY
  }
})));

// Use the service
const email = {
   from: 'FROM_EMAIL',
   to: 'TO_EMAIL',
   subject: 'Mandrill test',
   html: 'This is the email body'
};

app.service('mailer').create(email).then(function (result) {
  console.log('Sent email', result);
}).catch(err => {
  console.log(err);
});

License

Copyright (c) 2018

Licensed under the MIT license.