1. Install Nodemailer

npm install nodemailer

2. Import Nodemailer

const nodemailer = require("nodemailer");

3. Create Transporter

const transporter = nodemailer.createTransport({
 service: "gmail",
 auth: {
   user: "yourgmail@gmail.com",
   pass: "your-app-password",
 },
});

4. Create Mail Options

const mailOptions = {
 from: "yourgmail@gmail.com",
 to: "test@gmail.com",
 subject: "Test Mail",
 text: "Hello from Node.js",
};

5. Send Mail

transporter.sendMail(mailOptions, (error, info) => {
 if (error) {
   console.log(error);
 } else {
   console.log("Email Sent: " + info.response);
 }
});

Full Working Code

const nodemailer = require("nodemailer");
// Create Transporter
const transporter = nodemailer.createTransport({
 service: "gmail",
 auth: {
   user: "yourgmail@gmail.com",
   pass: "your-app-password",
 },
});
// Mail Data
const mailOptions = {
 from: "yourgmail@gmail.com",
 to: "test@gmail.com",
 subject: "Node.js Mail",
 text: "Hello from Node.js Mail",
};
// Send Mail
transporter.sendMail(
 mailOptions,
 (error, info) => {
   if (error) {
     console.log(error);
   } else {
     console.log(
       "Email Sent: " + info.response
     );
   }
 }
);

Using SMTP mail Send:

const express = require("express");
const nodemailer = require("nodemailer");
const cors = require("cors");
require("dotenv").config();

const app = express();

// Middleware
app.use(cors());
app.use(express.json());

// SMTP Transporter
const transporter = nodemailer.createTransport({

  host: process.env.SMTP_HOST,

  port: process.env.SMTP_PORT,

  secure: false,

  auth: {

    user: process.env.SMTP_MAIL,

    pass: process.env.SMTP_PASSWORD,

  },

});

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

  res.send("Mail Server Running");

});

// Send Mail API
app.post("/send-mail", async (req, res) => {

  try {

    const {
      to,
      subject,
      message
    } = req.body;

    // Mail Options
    const mailOptions = {

      from: process.env.SMTP_MAIL,

      to: to,

      subject: subject,

      html: `
        <h2>${subject}</h2>

        <p>${message}</p>
      `,

    };

    // Send Mail
    const info = await transporter.sendMail(
      mailOptions
    );

    res.status(200).json({

      success: true,

      message: "Email Sent Successfully",

      response: info.response,

    });

  } catch (error) {

    res.status(500).json({

      success: false,

      message: error.message,

    });

  }

});

// Server Start
app.listen(5000, () => {

  console.log(
    "Server Running on Port 5000"
  );

});