Sending Emails in Node.js with Nodemailer

KATHISH KUMARAN R
YavarTechWorks
Published in
3 min readMar 5, 2024

Hai Friends, In this post we are going to learn about how to send emails in Node.js with Nodemailer.

Introduction

In the world of web development, sending emails is a crucial functionality for various applications, like user confirmations, notifications, and feedback forms. In Node.js, this task is efficiently accomplished using the popular library called Nodemailer. This blog post will guide you through the process of sending emails using Nodemailer, from installation to crafting detailed messages.

Step 1: Setting Up

Before diving into the code, ensure you have Node.js and npm (or yarn) installed on your system. You can verify this by running node -v and npm -v in your terminal.

Step 2: Project Setup

Create a new directory for your project and navigate to it using your terminal. Then, initialize a new npm project by running:

npm init -y

This creates a package.json file, which will manage your project's dependencies.

Step 3: Install Nodemailer

Now, use npm to install the Nodemailer library:

npm install nodemailer --save

This command installs Nodemailer and adds it to your project’s dependencies in the package.json file.

Step 4: Create a Node.js Script

Create a new JavaScript file (e.g., send_email.js) to write your Nodemailer code. Open this file in your preferred code editor.

Step 5: Configure Nodemailer

Within your send_email.js file, import the Nodemailer library:

const nodemailer = require('nodemailer');

Next, create a transporter object to specify the email sending configuration. Here’s an example using SMTP (Simple Mail Transfer Protocol), the most common email sending protocol:

const transporter = nodemailer.createTransport({
host: 'smtp.your_email_provider.com', // Replace with your provider's SMTP server
port: 587, // Port may vary depending on your provider
secure: false, // Use true for TLS, false for non-TLS (consult your provider)
auth: {
user: 'your_email@provider.com', // Replace with your email address
pass: 'your_password' // Replace with your email password
}
});

Important considerations:

Replace placeholders:

  • your_email_provider.com: Replace with the SMTP server address of your email provider (e.g., smtp.gmail.com, smtp.yahoo.com).
  • your_email@provider.com: Replace with your email address that will be used to send the email.
  • your_password: Do not store your email password directly in the code. Consider environment variables or a secure configuration file to manage sensitive information.

Consult your email provider: Refer to your email provider’s documentation for specific SMTP server details and security requirements. Some providers may require additional authentication steps.

Step 6: Craft the Email Message

Define an object (mailOptions) containing details about the email:

const mailOptions = {
from: 'your_email@provider.com', // Replace with your email address
to: 'recipient@example.com', // Replace with the recipient's email address
subject: 'Sending Email using Nodemailer', // Replace with your desired subject
text: 'This is a plain text email body.', // Plain text content
// or
html: '<h1>Welcome!</h1><p>This is an HTML email body.</p>' // HTML content (optional)
};
  • Plain text vs. HTML: Choose either text or html for the email body. You can include both in the same message, but only the first one will be displayed by the email client.
  • Customize the message: Replace the placeholder values with your desired content.

Step 7: Send the Email

Finally, use the sendMail method of the transporter object to send the email:

transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error(error);
} else {
console.log('Email sent: ' + info.response);
}
});
  • Error handling: The sendMail method is asynchronous, meaning it returns immediately and executes the provided callback function when the email sending process is complete.
  • The first argument to the callback function is an error object, which will be null if the email is sent successfully.
  • The second argument is an info object containing details about the sent email, such as its message ID.

Step 8: Run the Script

Open your terminal, navigate to the directory containing your send_email.js file, and execute it using Node.js:

node send_email.js

Conclusion:

In this Post, we have learned about how to send emails in Node.js with Nodemailer. Hope to see you all in my next post, Until then Take Care! Keep Learning!

Thank You For Reading this Post………

Have a Nice Day……

👋👋👋

--

--