Send mails using NodeJS

Hey, fams! today we are going to learn how to send e-mails, right from our IDE using NodeJS. The module of interest is called Nodemailer.

Prerequisites

🔗 NodeJs
🔗 Nodemailer
🔗 Email account

🎯 Steps
Open editor (VSCode 😁), initialize your project with the command below

npm init -y

This command initiates a package.json, package.json.lock, and index.js (main entry file). The index.js will house all our logic.

Dependencies

📌Install Nodemailer

npm i nodemailer

📌 Import the package inside index.js

const nodemailer = require('nodemailer');

👨🏽‍🏫 For security reasons, make sure you install and use dot.env package to prevent your password from being exposed or pushed to GitHub.
Install dotenv

npm i dotenv -S

Require dotenv in your index.js file. I didn't require it in this project because I am using dummy data.

require('dotenv').config();

Then, create a .env file your email and password

Email= ***********@gmail.com
Password= ******

Logic

🎯 Your auth logic in index.js with dotenv

// Gmail account info
const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: process.env.EMAIL,
        pass: process.env.PASSWORD
    }
});

🎯 Your auth logic in index.js without dotenv. Write the logic below and of course change the email to your own and the password to yours too.

// Gmail account info
const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: '[email protected]',
        pass: 'ilovemymama'
    }
});

🎯 Next use the mailOption to send your message.

// Email info
const mailOptions = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'How to send emails using NodeJS',
    text: 'Follow the instructions and you will be fine'
};

🎯 Lastly, write:

// Send email 📧  and retrieve server response
transporter.sendMail(mailOptions, function(error, info) {
    if (error) {
        console.log(error);
    } else {
        console.log('Email sent: ' + info.response);
    }
});

When done properly, you should have the following logic in your index.js. That is if you choose not to use the dotenv
carbon (28)

To run: type 👇🏼 in your terminal

node index

Note: On your Gmail, do not forget to accept and allow the "Less secure apps" access to use your scripts with your Gmail SMTP connection. Gmail will alert you with an error if this option is off, you need to turn it on.
alert

Multiple emails, CC and BCC

const mailOptions = {
    from: '[email protected]',
    to: '[email protected],[email protected]',
    cc: '[email protected]',
    bcc: '[email protected]',
    subject: 'How to send emails using NodeJS',
    text: 'Follow the instructions and you will be fine'
};

Send attachment

const mailOptions = {
    from: '[email protected]',
    to: '[email protected],[email protected]',
    cc: '[email protected]',
    bcc: '[email protected]',
    subject: 'How to send emails using NodeJS',
    text: 'Follow the instructions and you will be fine',
    attachments: [{
    filename: "robocop.jpg", path: "./img/robocop.jpg"}]
};

Thanks 🙌🏽 for reading
Read my Web Socket

GitHub logo drsimplegraffiti / drsimplegraffiti

Config files for my GitHub profile.

Calm Developer

Hi 👋, I'm Abayomi

A passionate Web developer from Nigeria

drsimplegraffiti

drsimplegraffiti

drsimplegraffi1

  • 🌱 I’m currently learning Backend Node Js

Connect with me:

drsimplegraffiti drsimplegraffi1 15661401 drsimplegraffiti @drsimplegraffiti

Languages and Tools:

bootstrap css3 express git heroku html5 illustrator javascript mongodb nodejs photoshop postman react sass xd materialize mocha

Support:

drsimplegraffiti



drsimplegraffiti

 drsimplegraffiti

drsimplegraffiti

Dev.to Post

🔗 Improve your Github Profile

🔗 Download Browser Page as PDF

🔗 Send mails using NodeJS

🔗 Chat App using Socket.io

🔗 Expose a local web server to the internet

🔗 Web scraping using Node Js

Discuss

What other email 📬 services can you use apart from Gmail without toggling off the Less Secure App setting?

Reference

18