Transactional email
Messages a person is waiting for, where seconds matter.
- Order receipts and invoices
- One-time passwords and sign-in codes
- Password resets
- Shipping and account alerts
RichSMTP is an SMTP relay and email delivery service for transactional and marketing email. Point your app at one authenticated endpoint and it takes care of signing, queuing, retries, sender reputation and delivery reporting.
RichSMTP sits between your application and the world’s inboxes. You keep your code, your templates and your From address; the relay does the careful work of getting each message accepted.
A drop-in outgoing mail server. Swap the host, username and password in your app, CMS or device and nothing else has to change.
Send as your own domain with SPF, DKIM and DMARC aligned, so mailbox providers can verify every message is really yours.
Authentication-Results: spf=pass dkim=pass dmarc=pass
Start on managed shared pools, or move to a dedicated IP when you want a sending reputation that belongs to you alone.
Hard bounces and spam complaints are caught and suppressed automatically, so dead addresses stop dragging your reputation down.
Optional tracking shows what happens after delivery: which messages were opened and which links were clicked.
Every delivery, deferral, bounce and complaint is recorded as it happens and can be pushed to your own systems by webhook.
| Time | Event | Recipient | Detail |
|---|---|---|---|
| 12:04:31 | delivered | maya@example.org | 250 OK |
| 12:04:33 | deferred | liam@example.net | 451 try later · retrying |
| 12:04:38 | bounced | old.address@example.com | 550 no such user · suppressed |
| 12:04:41 | opened | maya@example.org |
Messages a person is waiting for, where seconds matter.
Messages people asked to receive, sent at volume.
Five things happen to every email you hand to RichSMTP. None of them needs a line of code from you.
235 Authenticated
Your app connects over TLS and signs in with its own SMTP credential.
DKIM-Signature: d=yourdomain.com
The message is DKIM-signed for your domain, so receivers can prove it is yours and unaltered.
451 → retry
Mail is paced for each mailbox provider. Temporary failures are retried with backoff instead of being dropped.
250 OK
The relay hands the message to the recipient’s mail server, encrypted whenever that server supports TLS.
event: delivered
Delivered, deferred, bounced or complained about — each outcome becomes an event you can read or receive by webhook.
Mailbox providers such as Gmail, Outlook and Yahoo judge every sender on three things: whether the mail is authenticated, how the sending domain and IP have behaved before, and how recipients react. RichSMTP is designed around those signals.
Every message leaves authenticated. SPF, DKIM and DMARC line up with the domain in your From address, which is what the large mailbox providers now expect from bulk senders.
New domains and new IPs start small. Sending volume grows step by step as providers see healthy mail, which is what IP and domain warm-up means in practice.
Addresses that hard-bounce or complain are suppressed automatically. Mailing dead addresses again and again is the fastest route to the spam folder.
RichSMTP is built for permission-based email: receipts, alerts and newsletters that people expect to receive.
| Record | What it tells a receiving server | DNS type |
|---|---|---|
| SPFSender Policy Framework | “These servers are allowed to send email for my domain.” | TXT |
| DKIMDomainKeys Identified Mail | “This message was signed by my domain and has not been altered.” | TXT |
| DMARCDomain-based Message Authentication, Reporting and Conformance | “If SPF and DKIM fail, do this with the message — and send me reports.” | TXT |
You publish these once on your sending domain. Your MX records and incoming email are not touched.
There is no SDK to install and no template language to learn. Use the mail library you already have and change three settings.
Node.js
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: process.env.RICHSMTP_HOST,
port: 587, // STARTTLS
auth: {
user: process.env.RICHSMTP_USER,
pass: process.env.RICHSMTP_PASS,
},
});
await transport.sendMail({
from: "Acme Receipts <receipts@yourdomain.com>",
to: "maya@example.org",
subject: "Your receipt",
text: "Thanks for your order.",
});
Python
import os, smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = "Acme Receipts <receipts@yourdomain.com>"
msg["To"] = "maya@example.org"
msg["Subject"] = "Your receipt"
msg.set_content("Thanks for your order.")
with smtplib.SMTP(os.environ["RICHSMTP_HOST"], 587) as smtp:
smtp.starttls()
smtp.login(os.environ["RICHSMTP_USER"], os.environ["RICHSMTP_PASS"])
smtp.send_message(msg)
PHP
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = getenv('RICHSMTP_HOST');
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = getenv('RICHSMTP_USER');
$mail->Password = getenv('RICHSMTP_PASS');
$mail->setFrom('receipts@yourdomain.com', 'Acme Receipts');
$mail->addAddress('maya@example.org');
$mail->Subject = 'Your receipt';
$mail->Body = 'Thanks for your order.';
$mail->send();
Setting up an SMTP relay is mostly a DNS job. Here is the whole of it.
Tell RichSMTP which domain your email comes from, for example yourdomain.com.
Add the SPF, DKIM and DMARC records shown for your domain. They are what proves the mail is yours.
Replace the host, username and password in your app. Your code, templates and From addresses stay as they are.
Start with real mail that people expect. Follow deliveries, bounces and complaints as events while volume grows.
Twelve terms that cover most conversations about sending email.
An SMTP relay service is an outgoing mail server run for you by a specialist provider. Your application hands each email to the relay over SMTP, and the relay delivers it to the recipient’s mail server, handling authentication, queuing, retries and sender reputation along the way.
RichSMTP is used to send email from your own domain: transactional email such as receipts, one-time passwords, password resets and alerts, and marketing email such as newsletters and announcements to people who opted in.
Port 587 with STARTTLS is the recommended port. Port 465 with implicit TLS is also available, and port 2525 is offered as an alternate for networks that block the standard ports.
Yes, you add a few records to your sending domain: SPF to authorise the sending servers, DKIM so receivers can verify the signature on each message, and DMARC to say what should happen when those checks fail. Your MX records and incoming email are not affected.
Yes. One RichSMTP account can carry both. Both must be permission-based, meaning they go to people who expect to hear from you.
On a shared pool, several senders send from the same managed IP addresses and share their reputation, which suits low and uneven volumes. A dedicated IP is used by you alone, so its reputation depends only on your email; it suits steady, higher volumes and needs to be warmed up first.
A hard bounce, where the address does not exist, is recorded and the address is suppressed so it is not mailed again. A soft bounce, caused by a temporary problem such as a full mailbox, is retried automatically before it is reported as failed.
Yes. Anything that can send through an external SMTP server works: web frameworks such as Laravel, Django and Rails, libraries such as Nodemailer, PHPMailer and smtplib, WordPress through an SMTP plugin, and devices such as printers and scanners.
No. RichSMTP relays the message your application builds. Your templates, subject lines and From addresses stay exactly as they are.
Authenticated, paced, watched and reported: that is the whole job of an SMTP relay, and it is the only job RichSMTP does.