# How to send an email using nodemailer

> 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.

Author: Flavio Copes | Published: 2023-05-10 | Canonical: https://flaviocopes.com/how-to-send-an-email-using-nodemailer/

Here’s how to send an email using nodemailer.

First install it:

```javascript
npm install nodemailer
```

Then import it in your Node script or app:

```javascript
import nodemailer from 'nodemailer'
```

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

```javascript
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:

```javascript

const options = {
  from: 'flavio@blabla.com',
  to: 'flavio@yo.com',
  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:

```javascript

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

This also accepts a promise-based syntax:

```javascript
const info = await transporter.sendMail(options)
```

Full code:

```javascript
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: 'flavio@blabla.com',
    to: 'flavio@yo.com',
    subject: 'Hi!',
    html: `<p>Hello</>`,
  }

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

One last tip: if your emails end up in spam, the problem is usually your domain's DNS setup. I made a tool to generate and explain [SPF, DKIM and DMARC records](https://flaviocopes.com/tools/email-dns/).
