Skip to content
An example of using Nodemailer with RabbitMQ
Branch: master
Clone or download
Latest commit 5e2a80e Apr 9, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.eslintrc Initial Feb 9, 2017
.gitignore Initial Feb 9, 2017
Gruntfile.js Initial Feb 9, 2017 Update Feb 9, 2017
config.json Initial Feb 9, 2017
package.json Initial Feb 9, 2017
publisher.js Update publisher.js Apr 9, 2019
server.js Initial Feb 9, 2017
subscriber.js Initial Feb 9, 2017

Nodemailer AMQP example

This is an example of using RabbitMQ (amqplib) for queueing Nodemailer email messages. This allows you to push messages from your application quickly to delivery queue and let Nodemailer handle the actual sending asynchronously from a background process.

This example also demonstrates using different credentials for different messages using the same Nodemailer transport.


Download files from Github

$ git clone git://
$ cd nodemailer-amqp-example

Install required dependencies

$ npm install --production

Make sure that you have a RabbitMQ server running (default config assumes RabbitMQ running on localhost with default credentials) and also check the configuration options in config.json.


The example contains 3 different parts:

  1. Example SMTP server (server.js). This is where Nodemailer sends the messages to. The server prints message source to console and does not actually deliver anything
  2. Subscriber process (subscriber.js). This is the worker process that fetches queued messages from RabbitMQ and delivers these using Nodemailer. You can spawn up as many subscriber processes as you want, even though a single one should be fine in most cases.
  3. Publisher process (publisher.js). This is an example application process that pushes message data to RabbitMQ for delivery. Normally it would be the job of your application.

Run all processes in different windows, using the following execution order:

$ npm run server
$ npm run subscribe
$ npm run publish


You can’t perform that action at this time.