INTRODUCTION
To ship an e-mail in Node.Js, use the nodemailer module. The nodemailer is a module that offers you the capability to send emails without hassle easily. It makes use of a easy Mail transfer Protocol (SMTP), a protocol for sending e-mail messages among servers. Maximum e mail systems that send mail over the net supports SMTP-primarily based sending.
Nodemailer is a module for Node.Js applications to allow easy as cake electronic mail sending. The undertaking got started out back in 2010 whilst there has been no sane choice to ship e-mail messages, nowadays it's miles the answer most Node.Js customers turn to by way of default.
PREREQUISITE
- NODE JS and NPM should have already installed in your computer.
- Basic knowledge of
- NODE, EXPRESS
- nodemailer
- nodemon
and after creating project install express, nodemailer package and more necessary packages
on your project by following commands:
npm install express
npm install nodemailer
CREATING PROJECT
Create a NOJE.JS project by entering the command "npm init -y" , Here -y is optional
After hitting the command you get package.json and following response in terminal
CODE EXAMPLES
- Project Structure
- Add "type": "module" in package.json file and Add "start": "nodemon ." inside 'scripts' components in package.json file .
- creating server
import bodyParser from 'body-parser'; import express from 'express'; import sendEmail from './sendEmail.js'; const app=express() app.set('view engine','ejs') app.use(express.json()) app.use(bodyParser.urlencoded({extended:true})) app.use(bodyParser.json()) app.listen(5000,(req,res)=>{ console.log("Server Started on Port 5000 "); })
- creating routes for sending email
app.get('/',(req,res)=>{
res.render('index')
})
app.post('/sendEmail',(req,res)=>{
const {email,subject,message}=req.body
var sent= sendEmail(email,subject,message);
if(sent!='0'){
res.send('Email Sent Successfully');
}
else{
res.send('Something Went Wrong');
}
})
- creating email sending module or function
import nodemailer from 'nodemailer'
function sendEmail(email,subject,message){
var email = email;
var subject = subject;
var message=message;
var mail = nodemailer.createTransport({
service:'gmail',
auth: {
user: "abc@gmail.com", // Your email id
pass: "pass", // generated password of app password from gmail
},
});
var mailOptions = {
from: "abc@gmail.com", //your email
to: email,
subject: subject,
html:message
};
mail.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log(0);
}
});
}
export default sendEmail;
- Creating front end in ejs: index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Send Email</title>
</head>
<body>
<div class="container" style="width: 38rem;">
<form method="post" action="/sendEmail">
<legend>SEND EMAIL</legend>
<div class="mb-3">
<label class="form-label">To</label>
<input type="email" name="email" required class="form-control" placeholder="Email">
</div>
<div class="mb-3">
<label class="form-label">SUBJECT</label>
<input type="text" name="subject" class="form-control" placeholder="subject">
</div>
<div class="mb-3">
<label class="form-label">BODY OR MESSAGE</label>
<textarea class="form-control" name="message" required rows="5" placeholder="Message Here..."></textarea>
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>
</div>
</body>
</html>
- gcreating App Password for our node app in Gmail
- Go to Security Tab and Click on App Password: if App Password option doesn't appear on your screen then you should enable 2-Step Verification
- Click on Select App and Select 'Other(Custom Name)' option as below
- Enter Name of Project
- Now Click on Generate and You will get Password for app
RUNNING A PROJECT
Run Your Project by Simply typing "npm start"
0 Comments