New: campaigns, automations and product emails in the same account. Meet Postal
Sign in Create account

Free SMTP

Free SMTP server to send your system's emails

Point WordPress, your store, Laravel, or any system that sends email to smtp.postal.so. No server to install, no credit card, with a report on every send.

Free plan, no credit card

SMTP setup
Server     smtp.postal.so
Port       465 (direct TLS) or 587 (STARTTLS)
User       postal
Password   ps_your_key
Authentication  AUTH PLAIN or AUTH LOGIN (after TLS)

No cost

What the Free plan includes

The numbers come straight from the plan, always up to date.

1.500emails per month
50emails per day
1sending domain
30days of history
  • SMTP and API on the same plan, with the same key
  • TLS connection, on ports 465 and 587
  • Every send appears in Emails and in Logs, with delivery status
  • Permanent bounces and complaints go onto the suppression list automatically
  • Open and click tracking and event webhooks
  • On the Free plan, the footer carries the “Sent with Postal” badge

Setup

Your connection details

Just copy them into your system.

FieldValue
Serversmtp.postal.so
Port465 (direct TLS, recommended) or 587 (STARTTLS)
If your network blocks it2465 (TLS) or 2587 (STARTTLS)
Usernamepostal
PasswordAn API key (ps_…). A send-only key is enough: create one just for SMTP
AuthenticationAUTH PLAIN or AUTH LOGIN, always after TLS
SenderAn address on a verified domain, like [email protected]

How to start

Get started in 3 steps

From sign-up to your first email in a few minutes.

01

Create the free account

Sign-up is open, and the Free plan already comes with SMTP turned on.

Create account
02

Verify your domain

Add the domain in the dashboard and create the records shown at your DNS provider (DKIM and Return-Path). Verification usually takes a few minutes.

Domains and DNS
03

Create a key and set up your system

In API keys, create a send-only key and use it as the SMTP password, with the server and port from the table above.

SMTP documentation

Code

Configuration examples

Swap the key and the sender and it works.

nodemailer
import nodemailer from 'nodemailer'

const transporter = nodemailer.createTransport({
  host: 'smtp.postal.so',
  port: 465,
  secure: true, // direct TLS; on port 587 use secure: false
  auth: { user: 'postal', pass: process.env.POSTAL_API_KEY },
})

await transporter.sendMail({
  from: 'Loja Exemplo <[email protected]>',
  to: '[email protected]',
  subject: 'Your order #10482 is out for delivery',
  html: '<p>Order <b>#10482</b> is on its way.</p>',
})
250queued
PHPMailer
use PHPMailer\PHPMailer\PHPMailer;

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.postal.so';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 587: ENCRYPTION_STARTTLS
$mail->SMTPAuth = true;
$mail->Username = 'postal';
$mail->Password = getenv('POSTAL_API_KEY');
$mail->CharSet = 'UTF-8';
$mail->setFrom('[email protected]', 'Loja Exemplo');
$mail->addAddress('[email protected]');
$mail->Subject = 'Your order #10482 is out for delivery';
$mail->isHTML(true);
$mail->Body = '<p>Order <b>#10482</b> is on its way.</p>';
$mail->send();
.env
MAIL_MAILER=smtp
MAIL_SCHEME=smtps
MAIL_HOST=smtp.postal.so
MAIL_PORT=465
MAIL_USERNAME=postal
MAIL_PASSWORD=ps_your_key
[email protected]
MAIL_FROM_NAME="Loja Exemplo"
smtplib
import os
import smtplib
from email.message import EmailMessage

message = EmailMessage()
message["From"] = "Loja Exemplo <[email protected]>"
message["To"] = "[email protected]"
message["Subject"] = "Your order #10482 is out for delivery"
message.set_content("Order #10482 is on its way.")
message.add_alternative("<p>Order <b>#10482</b> is on its way.</p>", subtype="html")

with smtplib.SMTP_SSL("smtp.postal.so", 465) as server:
    server.login("postal", os.environ["POSTAL_API_KEY"])
    server.send_message(message)
curl
curl --ssl-reqd --url "smtps://smtp.postal.so:465" \
  --user "postal:$POSTAL_API_KEY" \
  --mail-from "[email protected]" \
  --mail-rcpt "[email protected]" \
  --upload-file message.eml

Where to use it

Works in any system that speaks SMTP

If there's an “SMTP server” field in the settings, Postal fits.

Websites and online stores

WordPress (with an SMTP plugin) and store platforms: orders, sign-ups, and alerts go out on your domain.

ERPs and internal systems

Systems that don't talk to APIs only need the connection details: server, port, username, and password.

Apps in Laravel, Node, PHP, and Python

Swap the environment variables and the code that already uses SMTP stays the same.

Printers and devices

Scans and device alerts also go out through Postal's SMTP.

Questions about free SMTP

Is Postal's SMTP really free?

Yes. The Free plan includes the SMTP server, with no trial period: 1,500 emails per month and 50 per day, with one domain. If the quota runs out, messages are rejected until it renews (over SMTP, the code is 452 4.5.3); on paid plans you can allow sending beyond the quota, billed per thousand emails.

Do I need a credit card?

Not for the Free plan. You create the account, verify the domain, and start sending. The card only comes in if you choose a paid plan.

What's the SMTP server and which port should I use?

Server smtp.postal.so, username postal and, as the password, an API key. Use port 465 (direct TLS, the recommended one) or 587 (STARTTLS). If your network blocks those, use 2465 (TLS) or 2587 (STARTTLS).

Can I send from a Gmail or Outlook address?

No. Postal only sends from domains you've proven you control, like [email protected]. That's what makes emails pass SPF, DKIM, and DMARC checks and reach the inbox.

Does it work with WordPress, Laravel, and other systems?

It works with any system that speaks SMTP: WordPress (with an SMTP plugin), online stores, ERPs, Laravel, Node.js, PHP, Python, and even printers. Just swap the server, port, username, and password.

Do emails carry any Postal branding?

On the Free plan, yes: the footer of emails carries the “Sent with Postal” badge, including emails sent over SMTP. Paid plans don't carry the badge.

SMTP or API: which one to choose?

Use SMTP when your system already knows how to send over SMTP and you just want to swap the connection details. Use the email API when you want tags, scheduling, templates, and batch sending: those features don't exist over SMTP.

Try Postal's SMTP now

Create the account, verify the domain, and send your first email on the Free plan.