---
title: "Set up Strapi email over SMTP"
description: "@strapi/provider-email-nodemailer in config/plugins, then fix the Users & Permissions shipper email."
url: https://www.unitpost.com/docs/smtp/strapi
section: SMTP
updated: 2026-11-02
---
# Set up Strapi email over SMTP

## Connection settings

- **Host**: smtp.unitpost.com
- **Username**: unitpost (always this literal value)
- **Password**: Your Unitpost API key (must carry emails:send)
- **Port (STARTTLS)**: 587 (or 2587 if blocked, or 25)
- **Port (implicit TLS)**: 465 (or 2465 if blocked)
- **Security**: TLS 1.2 or 1.3 (required before AUTH)
- **From address**: Any address on a verified domain

## Set up Strapi email over SMTP

> @strapi/provider-email-nodemailer in config/plugins, then fix the Users & Permissions shipper email.

Strapi's Email feature uses `sendmail` until you install a provider; for SMTP that's `@strapi/provider-email-nodemailer`, configured in `config/plugins.js` or `config/plugins.ts`. The Users & Permissions plugin needs its own fix: its account confirmation and reset password templates carry a Shipper email that defaults to `no-reply@strapi.io`, and Unitpost rejects that sender.

### 1. Create a send-only key

In Unitpost, open Settings → SMTP and create a send-only key. Both `defaultFrom` and the Users & Permissions Shipper email need to be on a verified domain (/docs/domains).

### 2. Install the Nodemailer provider

```bash
npm install @strapi/provider-email-nodemailer --save
```

### 3. Configure the email plugin

`providerOptions` go to Nodemailer as they are: `secure: false` on port 587 upgrades with STARTTLS, and `requireTLS: true` refuses to continue without it. For port 465, set `secure: true`. Keep the key in `.env` as `SMTP_PASSWORD`.

```javascript
// config/plugins.js
module.exports = ({ env }) => ({
  email: {
    config: {
      provider: "nodemailer",
      providerOptions: {
        host: env("SMTP_HOST", "smtp.unitpost.com"),
        port: env.int("SMTP_PORT", 587),
        secure: false,
        requireTLS: true,
        auth: {
          user: env("SMTP_USERNAME", "unitpost"),
          pass: env("SMTP_PASSWORD"),
        },
      },
      settings: {
        defaultFrom: "no-reply@yourdomain.com",
        defaultReplyTo: "support@yourdomain.com",
      },
    },
  },
});
```

### 4. Restart and fix the shipper email

Restart Strapi so it loads the provider. Then open Settings → Users & Permissions Plugin → Email templates, edit each template, and set Shipper email to an address on your verified domain.

### 5. Send a test email

Under Settings → Email plugin → Configuration, type a Recipient email under Test email delivery and click Send test email. Recent versions also have Test connection, which checks the SMTP login without sending.

## Related

- [Configure n8n SMTP for invites and password resets](https://www.unitpost.com/docs/smtp/n8n): N8N_SMTP_* environment variables with N8N_SMTP_SSL=false for port 587, then invite a user to test.
- [Grafana SMTP settings for alert email](https://www.unitpost.com/docs/smtp/grafana): The smtp section of grafana.ini: host and port in one value, MandatoryStartTLS, and a contact point test.
- [Set up Discourse email over SMTP](https://www.unitpost.com/docs/smtp/discourse): DISCOURSE_SMTP_* in containers/app.yml, a rebuild, then Send test email from the admin Emails page.
