Socket
Socket
Sign inDemoInstall

node-multi-mailer

Package Overview
Dependencies
20
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    node-multi-mailer

A simple node.js module which expose high level API of Nodemailer and SendGrid.


Version published
0
Maintainers
1
Created
Weekly downloads
 

Readme

Source

node-multi-mailer

NPM Version NPM Downloads GitHub release License

A simple node.js module that exposes high-level API of Nodemailer and SendGrid.

Installation

Prerequisites

Install Package

The following recommended installation requires npm. If you are unfamiliar with npm, see the npm docs. Npm comes installed with Node.js since node version 0.8.x, therefore, you likely already have it.


# With NPM

npm install --save node-multi-mailer

# With Yarn

yarn add node-multi-mailer

Verify Sender Identity from SendGrid

Verify an email address or domain in the Sender Authentication tab. Without this, you will receive a 403 Forbidden response when trying to send mail.

Examples

If you want to use an email template, then add an email folder in your project root directory and create a login.ejs file in the email folder. You can use any template name you want.

Add attachment folder in your root directory for sending an email with attachments.

Folder structure with mail template:

    +-- email
    |   +-- login.ejs
    +-- attachments
    |   +-- myImage.png
    |   +-- resume.pdf
    |   +-- resume.docx
    +-- node_modules
    +-- index.js
    +-- package.json

If required, use this login.ejs file as an example template.

<!-- login.ejs -->

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Node-Multi-Mailer</title>
  </head>

  <body>
    <h1>Hey <%= firstName %> <%= lastName %>, Your OTP is <%= otp %></h1>
  </body>
</html>

Implementation with NodeJs and SendGrid

// Available options inside configuration object

const multiMailer = require("node-multi-mailer");

const multiMailer = multiMailer.configuration({
  senderEmail: "you@example.com",
  senderName: "your business name", // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "me@example.com", // optional parameter [ default = senderEmail ]
  templateFolderPath: emailFolder, // optional parameter  [ required for sending templates ]
  attachmentFolderPath: attachmentFolder, // Optional parameter  [ required for sending attachments]
});

A normal plain text email without any attachments

// index.js

var multiMailer = require("node-multi-mailer");

// Create a new instance of MultiMailer
multiMailer.configuration({
  senderEmail: "you@example.com",
  senderName: "your business name", // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "me@example.com", // optional parameter [ default = senderEmail ]
});

var RECEIVER_EMAIL = "developer.shiv2020@gmail.com";

// To send a plain text email
multiMailer.SendGrid.sendTextEmail(
  RECEIVER_EMAIL,
  "Sending email from node-multi-mailer", // subject
  "Thanks for sending email with node-multi-mailer" // body
);

A normal plain text email with attachments


// index.js

var multiMailer = require("node-multi-mailer");
var path = require("path");

var attachmentFolder = path.join(__dirname, "attachment"); // attachment folder path

let attachments = ["myImage.png", "resume.pdf", "resume.docx"]; // pass list of files you want to send with multiMailer

// Create a new instance of MultiMailer
multiMailer.configuration({
  senderEmail: "you@example.com",
  senderName: "your business name", // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "me@example.com", // optional parameter [ default = senderEmail ]
  templateFolderPath: emailFolder, // optional parameter  [ required for sending templates ]
  attachmentFolderPath: attachmentFolder, // Optional parameter  [ required for sending attachments]
});

var RECEIVER_EMAIL = "developer.shiv2020@gmail.com";

// To send a plain text email
multiMailer.SendGrid.sendTextEmail(
  RECEIVER_EMAIL,
  "Sending email from node-multi-mailer", // subject
  "Thanks for sending email with node-multi-mailer" // body
  attachments,
);

A template email using EJS without attachments

// index.js

var multiMailer = require("node-multi-mailer");
var path = require("path");

var emailFolder = path.join(__dirname, "email"); // template folder path

// Create a new instance of MultiMailer
multiMailer.configuration({
  senderEmail: "test@example.com",
  senderName: SENDER_NAME, // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "test@example.com",
  templateFolderPath: emailFolder,
});

var RECEIVER_EMAIL = "developer.shiv2020@gmail.com";

var data = {
  fisrtName: "Shiv",
  lastName: "Kumar",
  otp: "123456",
};

// To send a template email
multiMailer.SendGrid.sendEjsTemplateWithData(
  RECEIVER_EMAIL,
  "Sending email from node-multi-mailer", // subject
  "login.ejs", // template name
  data // template data
);

A template email using EJS with attachments

// index.js

var multiMailer = require("node-multi-mailer");
var path = require("path");

var attachmentFolder = path.join(__dirname, "attachment"); // attachment folder path

var emailFolder = path.join(__dirname, "email"); // template folder path

let attachments = ["myImage.png", "resume.pdf", "resume.docx"]; // pass list of files you want to send with multiMailer

// Create a new instance of MultiMailer
multiMailer.configuration({
  senderEmail: "test@example.com",
  senderName: SENDER_NAME, // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "test@example.com",
  templateFolderPath: emailFolder,
  attachmentFolderPath: attachmentFolder,
});

var RECEIVER_EMAIL = "developer.shiv2020@gmail.com";

var data = {
  fisrtName: "Shiv",
  lastName: "Kumar",
  otp: "123456",
};

// To send a template email
multiMailer.SendGrid.sendEjsTemplateWithData(
  RECEIVER_EMAIL,
  "Sending email from node-multi-mailer", // subject
  "login.ejs", // template name
  data // template data
  attachments,
);

Implementation with ExpressJs

A template email using EJS without attachments

// index.js

var express = require("express");
var multiMailer = require("node-multi-mailer");
var path = require("path");

var attachmentFolder = path.join(__dirname, "attachment"); // attachment folder path

var emailFolder = path.join(__dirname, "email"); // template folder path

let attachments = ["myImage.png", "resume.pdf", "resume.docx"]; // pass list of files you want to send with multiMailer

// Create a new instance of MultiMailer
multiMailer.configuration({
  senderEmail: "test@example.com",
  senderName: SENDER_NAME, // Business Name
  sendGridApiKey: SENDGRID_API_KEY, // SendGrid API Key
  replyTo: "test@example.com",
  templateFolderPath: emailFolder,
  attachmentFolderPath: attachmentFolder,
});

var app = express();

app.get("/", async (req, res) => {

  var RECEIVER_EMAIL = "developer.shiv2020@gmail.com";

  var data = {
    fisrtName: "Shiv",
    lastName: "Kumar",
    otp: "123456",
  };

  // To send a template email
  await multiMailer.SendGrid.sendEjsTemplateWithData(
    RECEIVER_EMAIL,
    "Sending email from node-multi-mailer", // subject
    "login.ejs", // template name
    data // template data
    attachments,
  );

  return res.send("Email sent");
});

Contributors

License

MIT

Keywords

FAQs

Last updated on 20 Aug 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc