Skip to content

How to send an email using nodemailer

New Course Coming Soon:

Get Really Good at Git

Here’s how to send an email using nodemailer.

First install it:

npm install nodemailer

Then import it in your Node script or app:

import nodemailer from 'nodemailer'

Initialize a transporter object that we’ll use later to send the email:

const transporter = nodemailer.createTransport({
  host: 'smtp.yoursmtpserver.com',
  port: 465,
  secure: true,
  auth: {
    user: 'smtp_user',
    pass: 'smtp_pass',
  },
})

⚠️ NOTE: you need to fill those values with a real SMTP server credentials

Now create an options object with the details of the email you want to send:


const options = {
  from: '[email protected]',
  to: '[email protected]',
  subject: 'Hi!',
  html: `<p>Hello</>`,
}

Finally call the sendMail() method on the transporter object you created previously, passing options and a callback that will be executed when it’s finished:


transporter.sendMail(options, (err, info) => {
  if (err) {
    console.log(err)
  } else {
    console.log('EMAIL SENT')
  }
})

This also accepts a promise-based syntax:

const info = await transporter.sendMail(options)

Full code:

import nodemailer from 'nodemailer'

const sendEmail = () => {
  const transporter = nodemailer.createTransport({
    host: 'smtp.yoursmtpserver.com',
    port: 465,
    secure: true,
    auth: {
      user: 'smtp_user',
      pass: 'smtp_pass',
    },
  })

  const options = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Hi!',
    html: `<p>Hello</>`,
  }

	transporter.sendMail(options, (err, info) => {
    if (err) {
      console.log(err)
    } else {
      console.log('EMAIL SENT')
    }
  })
}
→ Get my Node.js Handbook
→ Read my Node.js Tutorial on The Valley of Code

Here is how can I help you: