How To Send Email with NodeJS and Nodemailer using Gmail | NodeJS Tutorial for Beginner
To run this project you need to do some setup
- Install nodejs and postman on you computer
- create a folder and open Terminal / Command Prompt/ Power Shell whiten this folder
- Make sure you don't have 2 step verification of your gmail
- Turn on less secure app access from https://myaccount.google.com/lesssecureapps
- Copy everything from index.js (Below) and make a file with same name and paste it
- Replace gmail address and password from index.js
- And use following commands
npm install nodemon express nodemailer body-parser
Initilize your nodejs project (Make sure your project folder name has no space and no uppercase)
npm init -y
Install essential packages using npm
npm install nodemon express nodemailer body-parser
Install essential packages using npm
node index.js
index.js
// Fast, unopinionated, minimalist web framework for node. const express = require('express'); // Parse incoming request bodies in a middleware before your handlers, available under the const bodyParser = require('body-parser'); // Send e-mails from Node.js – easy as cake! 🍰✉️ const nodemailer = require('nodemailer'); // CORS is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options. const cors = require('cors'); const app = express(); require('dotenv').config(); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })); // parse application/json app.use(bodyParser.json()); app.use(cors()); // POST ROUTE FOR POST DATA TO SERVER app.post('/mail', async (req, res, next) => { // DESTRUCTURING VARIABLE AND SETTING IT WITH DIFFERENT NAME let { email, subject, text } = req.body; // console.log(mailContent); // create reusable transporter object using the default transport let transporter = nodemailer.createTransport({ // host: "localhost", service: "gmail", port: 465, secure: false, // true for 465, false for other ports auth: { // SENDER EMAIL AND PASSWORD user: sendergmailaddress@gmail.com, // generated ethereal user pass: recivergmailpassword // generated ethereal password } }); const message = { // SENDER MAIL from: process.env.EMAIL, // REVICER MAIL // to: "recivergmailaddress@gmail.com", to: email, subject: subject, text: text, html: "<p>HTML version of the message</p>" }; try { // send mail with defined transport object let info = await transporter.sendMail(message); res.status(200).json({ "Message": message }); console.log(info); } catch (error){ res.send(error); console.log("error: ", error); } transporter.close(); }); const PORT = process.env.PORT || 4000; app.listen(PORT, () => console.log("server is running on " + PORT));
Now open postman
Create a new request and do same as mine change gmail address and send it
Now check inbox of reciver.
Check out video tutorial
Thank you!
No comments: