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
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.
- 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.
| Field | Value |
|---|---|
| Server | smtp.postal.so |
| Port | 465 (direct TLS, recommended) or 587 (STARTTLS) |
| If your network blocks it | 2465 (TLS) or 2587 (STARTTLS) |
| Username | postal |
| Password | An API key (ps_…). A send-only key is enough: create one just for SMTP |
| Authentication | AUTH PLAIN or AUTH LOGIN, always after TLS |
| Sender | An 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.
Create the free account
Sign-up is open, and the Free plan already comes with SMTP turned on.
Create accountVerify 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 DNSCreate 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 documentationCode
Configuration examples
Swap the key and the sender and it works.
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>',
})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();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"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 --ssl-reqd --url "smtps://smtp.postal.so:465" \
--user "postal:$POSTAL_API_KEY" \
--mail-from "[email protected]" \
--mail-rcpt "[email protected]" \
--upload-file message.emlWhere 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.
See also
Keep exploring
Free email API
Prefer an HTTP request? Send, schedule, and trigger in batches through the API.
Learn moreTransactional email
Confirmations, receipts, and alerts from your system, with tracking of every send.
Learn moreMigrate to Postal
Already sending through another platform? See the guide for yours.
Learn moreTry Postal's SMTP now
Create the account, verify the domain, and send your first email on the Free plan.