M
MeshWorld.
Brevo Sendinblue SMTP Email HowTo 7 min read

How to Use Brevo (Sendinblue) SMTP Server for Sending Email

Jena
By Jena
| Updated: Apr 1, 2026

Brevo (formerly Sendinblue) SMTP is a transactional email relay with one of the most generous free tiers available — 300 emails/day with no expiration. The SMTP server is smtp-relay.brevo.com on port 587 (STARTTLS) or 465 (SSL). Authentication uses your Brevo login email as the username and an SMTP Key (not your account password) that you generate in the Brevo dashboard. No sender domain verification is required to start, though DKIM setup improves deliverability. This guide covers the exact settings, how to generate the SMTP key, and working code examples for PHP, Python, and Node.js.

:::note[TL;DR]

  • SMTP Server: smtp-relay.brevo.com
  • Port 587 (STARTTLS) or 465 (SSL)
  • Username: your Brevo account email address
  • Password: your Brevo SMTP Key (from dashboard — not your login password)
  • Free plan: 300 emails/day, no expiration, no credit card required :::

What are the Brevo SMTP server settings?

SettingValue
SMTP Serversmtp-relay.brevo.com
Port (STARTTLS)587
Port (SSL/TLS)465
EncryptionSTARTTLS (recommended)
AuthenticationRequired
UsernameYour Brevo account email address
PasswordYour Brevo SMTP Key

The username is your Brevo login email — the same address you use to sign into the dashboard. The password is a separate SMTP Key generated in the dashboard settings. Your account password won’t work.

How do I generate a Brevo SMTP Key?

  1. Log in to your Brevo account at app.brevo.com
  2. Click your account name (top right) → SMTP & API
  3. Under the SMTP tab, you’ll see your SMTP Key
  4. If no key is shown, click Generate a new SMTP Key
  5. Name it (e.g., “Contact Form”) and copy the key

The SMTP Key is a long alphanumeric string. Store it securely — if you need to view it later, you can regenerate it from the same screen, but existing integrations using the old key will break until updated.

The Scenario: You just migrated from Sendinblue to Brevo (they rebranded in 2023). Your old integration used smtp.sendinblue.com as the host and your old API key as the password. After the migration, emails stop going out. The server name changed to smtp-relay.brevo.com and you need to regenerate the SMTP Key from the new dashboard. Two config lines to update.

Does Brevo require sender verification?

Brevo doesn’t require domain verification to start sending, but they do verify individual sender email addresses. When you add a new “From” address, Brevo sends a verification email to that address — click the link to confirm.

For better deliverability, set up DKIM for your sending domain:

  • Dashboard → Senders & IPDomains
  • Add your domain and follow the DNS record instructions
  • Once DKIM is active, Brevo signs outgoing emails automatically

DKIM is optional for the free plan but strongly recommended for any serious use.

How do I send email via Brevo SMTP in code?

PHP with PHPMailer

composer require phpmailer/phpmailer
<?php
use PHPMailer\PHPMailer\PHPMailer;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

$mail->isSMTP();
$mail->Host       = 'smtp-relay.brevo.com';
$mail->SMTPAuth   = true;
$mail->Username   = 'you@youraccount.com';     // Your Brevo login email
$mail->Password   = 'xsmtpsib-xxxxxxxxxxxxxxxxx'; // Your Brevo SMTP Key
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

$mail->setFrom('you@yourdomain.com', 'Your Name'); // Verified sender address
$mail->addAddress('recipient@example.com');
$mail->Subject = 'Test via Brevo SMTP';
$mail->Body    = 'Sent through Brevo SMTP with PHPMailer.';

$mail->send();
echo 'Message sent.';

Note that the Username (your Brevo account email) and the setFrom address (your sending domain email) can be different. The username is just for authentication.

Python with smtplib

import smtplib
from email.mime.text import MIMEText

smtp_server = "smtp-relay.brevo.com"
port = 587
username = "you@youraccount.com"               # Brevo account email
smtp_key = "xsmtpsib-xxxxxxxxxxxxxxxxx"        # Brevo SMTP Key

msg = MIMEText("Sent through Brevo SMTP.")
msg["Subject"] = "Test via Brevo SMTP"
msg["From"] = "you@yourdomain.com"     # Verified sender address
msg["To"] = "recipient@example.com"

with smtplib.SMTP(smtp_server, port) as server:
    server.ehlo()
    server.starttls()
    server.login(username, smtp_key)   # Account email + SMTP Key
    server.sendmail("you@yourdomain.com", "recipient@example.com", msg.as_string())

print("Email sent.")

Node.js with Nodemailer

npm install nodemailer
const nodemailer = require("nodemailer");

const transporter = nodemailer.createTransport({
  host: "smtp-relay.brevo.com",
  port: 587,
  secure: false,    // STARTTLS
  auth: {
    user: "you@youraccount.com",              // Brevo account email
    pass: "xsmtpsib-xxxxxxxxxxxxxxxxx",      // Brevo SMTP Key
  },
});

async function sendMail() {
  await transporter.sendMail({
    from: '"Your Name" <you@yourdomain.com>', // Verified sender address
    to: "recipient@example.com",
    subject: "Test via Brevo SMTP",
    text: "Sent through Brevo SMTP with Nodemailer.",
  });
  console.log("Email sent.");
}

sendMail().catch(console.error);

What does Brevo cost?

PlanDaily LimitMonthly EmailsPrice
Free300/day9,000/monthFree
StarterNo daily limit20,000/month~$9/month
BusinessNo daily limit20,000+/month~$18/month

The free plan’s 300/day limit translates to about 9,000 emails/month. That’s more than enough for a contact form, a small SaaS app’s notifications, or a personal newsletter. The daily cap is the main constraint — if you need to send a batch of more than 300 emails in a day, you’ll need a paid plan.

Compared to alternatives: SendGrid gives 100/day free, Mailgun gives 1,000/month for 3 months only. Brevo’s 300/day permanent free tier is the most generous of the three for ongoing use.

Common Brevo SMTP errors and how to fix them

535 Authentication Failed You used your Brevo account password instead of the SMTP Key. Go to SMTP & API in the dashboard and copy the SMTP Key.

550 Unverified sender The From address hasn’t been verified. Go to Senders & IP → Senders and add/verify the address.

Daily quota exceeded You hit the 300/day limit on the free plan. Either wait until the next day, or upgrade to a paid plan that removes the daily cap.

Connection refused Brevo only allows connections on ports 587 and 465. Port 25 is not supported for client SMTP submission.

Old Sendinblue hostname still in use If you migrated from Sendinblue, update the SMTP server from smtp.sendinblue.com to smtp-relay.brevo.com. The old hostname may still work temporarily but will eventually be deprecated.


FAQ

Is Brevo the same as Sendinblue?

Yes. Sendinblue rebranded to Brevo in 2023. The product is the same; the SMTP server hostname changed from smtp.sendinblue.com to smtp-relay.brevo.com. If you have old Sendinblue integrations, update the hostname.

Does Brevo’s free plan require a credit card?

No. The free plan is genuinely free with no credit card required. You just need a Brevo account.

Can I send from multiple domains on Brevo’s free plan?

Yes. You can verify and send from multiple sender addresses and domains on the free plan. The 300/day limit applies to the total emails sent from your account, not per domain.

What happened to the old Sendinblue SMTP hostname?

smtp.sendinblue.com is the old hostname. Brevo recommends migrating to smtp-relay.brevo.com. As of 2026, both should still work, but update to the new hostname to avoid issues when the old one is eventually retired.

Does Brevo support transactional email templates?

Yes. Brevo has a template editor in the dashboard. You can design templates and reference them by ID when sending via SMTP (using a special SMTP header X-Sib-Template-Id). For template-driven emails at scale, the Brevo API is a better fit than raw SMTP.