Marketing & Transactional Email
10 min readBrevo SMTP Settings
Complete guide to configure Brevo (formerly Sendinblue) SMTP for both marketing and transactional emails. Includes a generous free tier with 300 emails per day.
Brevo SMTP Quick Reference
| SMTP Server | smtp-relay.brevo.com |
| Port (TLS) | 587 Recommended |
| Alternative Port | 465 (SSL) |
| Encryption | STARTTLS or SSL |
| Username | Your Brevo account email |
| Password | SMTP API Key (from Brevo dashboard) |
| Free Tier | 300 emails/day |
Sendinblue is now Brevo
Sendinblue rebranded to Brevo in May 2023. The SMTP settings remain the same, but the server hostname has changed to smtp-relay.brevo.com. Legacy smtp-relay.sendinblue.com still works but may be deprecated.
checklist Prerequisites
- check_circle A Brevo account (free signup available)
- check_circle SMTP API Key generated from your dashboard
- check_circle Verified sender email or domain (recommended)
integration_instructions Step-by-Step Setup
Create Your SMTP API Key
- 1. Log in to your Brevo account
- 2. Go to Settings โ SMTP & API
- 3. Click 'Generate a new SMTP Key'
- 4. Name your key and copy it immediately
Important: Copy your SMTP key immediately. For security, it won't be shown again.
Verify Your Sender
- 1. Go to Settings โ Senders & Domains
- 2. Add a sender email address or verify your domain
- 3. For domain: Add DKIM and SPF records to your DNS
- 4. Click 'Verify' and wait for confirmation
Configure Your Application
Use these settings in your email client or application:
Server: smtp-relay.brevo.com
Port: 587 (TLS) or 465 (SSL)
Username: your-brevo-email@example.com
Password: your-smtp-api-key
code Code Examples
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Brevo SMTP settings
SMTP_SERVER = "smtp-relay.brevo.com"
SMTP_PORT = 587
BREVO_EMAIL = "your-brevo-email@example.com"
SMTP_KEY = "your-smtp-api-key"
# Create message
msg = MIMEMultipart()
msg['From'] = "sender@yourdomain.com"
msg['To'] = "recipient@example.com"
msg['Subject'] = "Test from Brevo SMTP"
body = "This is a test email via Brevo."
msg.attach(MIMEText(body, 'plain'))
# Send email
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(BREVO_EMAIL, SMTP_KEY)
server.send_message(msg)
print("Email sent!")
<?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 = 'your-brevo-email@example.com';
$mail->Password = 'your-smtp-api-key';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('sender@yourdomain.com', 'Your Name');
$mail->addAddress('recipient@example.com');
$mail->Subject = 'Test from Brevo SMTP';
$mail->Body = 'This is a test email via Brevo.';
$mail->send();
echo "Email sent!";
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: 'smtp-relay.brevo.com',
port: 587,
secure: false,
auth: {
user: 'your-brevo-email@example.com',
pass: 'your-smtp-api-key'
}
});
const mailOptions = {
from: 'sender@yourdomain.com',
to: 'recipient@example.com',
subject: 'Test from Brevo SMTP',
text: 'This is a test email via Brevo.'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) console.error('Error:', error);
else console.log('Email sent:', info.messageId);
});
payments Pricing
| Plan | Emails | Price |
|---|---|---|
| Free | 300/day | Free forever |
| Starter | 20,000/mo | $25/mo |
| Business | 20,000+/mo | $65/mo |
| Enterprise | Custom | Contact sales |
build Troubleshooting
Authentication Failed
Invalid credentials error
Fix: Use your Brevo account email as username and the SMTP API Key (not your account password) as password. Generate a new key if needed.
Daily Limit Reached
Free tier limit exceeded
Fix: Free tier is limited to 300 emails/day. Wait for the daily reset or upgrade to a paid plan for higher limits.