---
title: "Nodemailer"
disqus: JBeanny
---
By: Yim Sotharoth
Using npm nodemailer package
===
## Table of Contents
[TOC]
## Installation
:::info
_firstly create a node project_
```bash=
$ npm init --y
```
_I named folder as `nodemailer` ( or anything you want ) so I cd in my folder_
> In nodemailer folder install a few libraries with the following command
```bash=
$ npm install nodemailer express dotenv
```
:::
## Create a simple server with express
> In index.js created a simple server like this:
```javascript!
const express = require("express");
const app = express();
app.use(express.json());
app.get("/", (req, res) => {
res.send("Hello From Metaphorlism");
});
app.listen(8080, () => {
console.log(`Server is listening on port: 8080`);
});
```
:::success
With this above code we have a GET request on PORT: 8080
:::
## Create function to send email
_Before getting into creating our function we need to setup our creds on sendinblue_
> Navigate to sendinblue and create your smtp
Link: https://www.sendinblue.com
_Created a file called .env to store our sensitive creds_
> In .env file:
```javascript!
SMTP_PASSWORD='YOUR-SMTP-PASSWORD'
```
_Created a folder called `utils`_
> In `utils` I created a file called email.js with the following code:
```javascript!
const { createTransport } = require("nodemailer");
require("dotenv").config({});
// Create a transporter object
let transporter = createTransport({
host: "smtp-relay.sendinblue.com",
port: 587,
auth: {
user: "metaphorlism@gmail.com",
pass: process.env.SMTP_PASSWORD,
},
});
const sendEmail = (res, receiver, subject, text) => {
// Create a mailOptions object
let mailOptions = {
from: "metaphorlism@gmail.com",
to: receiver,
subject: subject,
text: text,
};
// Send the email
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
return res.status(500).json({
status: "Fail",
message: error.message,
});
} else {
res.status(200).json({
status: "Success",
message: info.response,
});
}
});
};
module.exports = sendEmail;
```
## Create a POST request and trigger `sendEmail` function
> In `index.js` create a new request:
```javascript!
app.post("/", (req, res) => {
const { receiver, subject, text } = req.body;
sendEmail(res, receiver, subject, text);
});
```
## Completed code for `index.js`
> In 'helpers' I created a file called uuidValidateV4.js with the following code:
```javascript!
const express = require("express");
const app = express();
const sendEmail = require("./utils/email");
app.use(express.json());
app.get("/", (req, res) => {
res.send("Hello From Metaphorlism");
});
app.post("/", (req, res) => {
const { receiver, subject, text } = req.body;
sendEmail(res, receiver, subject, text);
});
app.listen(8080, () => {
console.log(`Server is listening on port: 8080`);
});
```
## Demo


> Project Repository : https://github.com/metaphorlism/npm-libraries/tree/npm-nodemailer
### Contact Us
- :mailbox: yimsotharoth999@gmail.com
- [GitHub](https://github.com/metaphorlism)
- [Facebook Page](https://www.facebook.com/Metaphorlism)
- [Instagram: Metaphorlism](https://www.instagram.com/metaphorlism/)