Feathers mailer service using
nodemailer
npm install feathers-mailer --save
If using a transport plugin, install the respective module.
const mailer = require('feathers-mailer');
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
is a thin wrapper for transporter.sendMail
, accepting body
and returning a promise.
See here for possible fields of body
.
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)
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);
});
Copyright (c) 2018
Licensed under the MIT license.