Noteworthy Puppy Movies

    ms-mailer

    10.7.0 • Public • Published

    Mailer Microservice

    Sets up a rabbitmq consumer with QoS, and distributes incoming messages based on passed options

    npm version Build Status semantic-release Commitizen friendly codecov.io

    Installation

    npm i ms-mailer -S

    Compatible with node >= 7.6.x

    Usage

    const Promise = require('bluebird');
    const Mailer = require('ms-mailer');
    const AMQP = require('@microfleet/transport-amqp');
    
    const mailer = new Mailer({
      debug: Boolean,
      predefinedLimits: {
        maxConnections: Number,
        maxMessages: Number,
      },
      amqp: {
        // @microfleet/transport-amqp options
      },
      htmlToText: {
        // https://www.npmjs.com/package/html-to-text
      },
      accounts: {
        test: {
          // nodemailer smtp transport configuration
          service: 'yahoo',
          auth: {
            user: 'test@yahoo.com',
            pass: '123'
          }
        }
      }
    });
    
    // returns promise, which resolves when listeners are established
    const mailerReady = mailer.connect();
    
    Promise.props({ mailer: mailerReady, amqp: AMQP.connect() })
    .then(function sendMessage(props) {
      const { amqp } = props;
      return amqp.publishAndWait('mailer.predefined', {
        account: 'test',
        email: {
          // nodemailer mail options
          // make sure not to pass streams or paths, as they can't be transferred through the wire
          // as the processing will be held on the other machine
          // in case you want to use some other services like S3, then an expansion can be coded for this module
        }
      });
    })
    .then(function sendMessageReponse(response) {
      // nodemailer smtp transport response
    });

    Configuration options

    1. debug - boolean, whether to print log messages or not
    2. prefix - which route prefix to bind to, defaults to mailer
    3. postfixAdhoc - which suffix to use for adhoc messaging
    4. postfixPredefined - which suffix to use for predefined accounts messaging
    5. predefinedLimits - which opts to pass to smtp transport constructor for predefined accounts, consult nodemailer-smtp-transport
    6. amqp - options that are passed to ms-amqp-transport
    7. htmlToText - html to text conversion options for nodemailer
    8. accounts - predefined accounts that are initialized at service startup, format is the same as in the nodemailer smtp transport

    Messaging format

    1. Adhoc messaging mailer.adhoc:
    {
      "account": String,
      "email": {
        // nodemailer email payload
      }
    }
    1. Predefined messaging mailer.predefined:
    {
      "account": {
        // nodemailer smtp transport format
      },
      "email": {
        // nodemailer email payload
      }
    }

    Roadmap

    1. test dkim signing
    2. test different types of messages being sent
    3. test more error cases
    4. add QoS handling on demand

    Install

    npm i ms-mailer

    DownloadsWeekly Downloads

    9

    Version

    10.7.0

    License

    MIT

    Unpacked Size

    42.1 kB

    Total Files

    29

    Last publish

    Collaborators

    • avvs