Skip to content
FLAVIO COPES
flaviocopes.com
2026

How to send an email using nodemailer

By Flavio Copes

Learn how to send an email from Node.js using nodemailer, from creating an SMTP transporter to defining the message options and sending your first email.

~~~

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')
    }
  })
}
~~~

Related posts about node: