SMTPCredentials issued at onboarding

SMTP relay service for the email your app already sends.

tinyRelay's SMTP relay service lets any application, framework or server that can send over SMTP deliver its transactional email through our email delivery infrastructure. Change the host, port and credentials in your mail settings. There is no new code to write.

SMTP SETTINGS · RELAYING
Laravel
.env
tinyRelay
DKIM-signed
Recipient
mail server
# .env
MAIL_MAILER=smtp
MAIL_HOST=[SMTP host]
MAIL_PORT=[port]
MAIL_USERNAME="[issued at onboarding]"
MAIL_PASSWORD="[issued at onboarding]"
# TLS / encryption: [confirm at onboarding]
MAIL_FROM_ADDRESS="no-reply@yourdomain.com"
MAIL_FROM_NAME="${APP_NAME}"
Django
settings.py
tinyRelay
DKIM-signed
Recipient
mail server
# settings.py
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "[SMTP host]"
EMAIL_PORT = [port]
EMAIL_HOST_USER = os.environ["TINYRELAY_SMTP_USER"]      # issued at onboarding
EMAIL_HOST_PASSWORD = os.environ["TINYRELAY_SMTP_PASS"]  # issued at onboarding
# EMAIL_USE_TLS / EMAIL_USE_SSL: [confirm at onboarding]
DEFAULT_FROM_EMAIL = "no-reply@yourdomain.com"
Rails
Action Mailer
tinyRelay
DKIM-signed
Recipient
mail server
# config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:   "[SMTP host]",
  port:      [port],
  user_name: ENV["TINYRELAY_SMTP_USER"], # issued at onboarding
  password:  ENV["TINYRELAY_SMTP_PASS"]  # issued at onboarding
  # authentication / TLS options: [confirm at onboarding]
}
Nodemailer
Node.js
tinyRelay
DKIM-signed
Recipient
mail server
import nodemailer from "nodemailer";

const transporter = nodemailer.createTransport({
  host: "[SMTP host]",
  port: [port],
  // secure / STARTTLS: [confirm at onboarding]
  auth: {
    user: process.env.TINYRELAY_SMTP_USER, // issued at onboarding
    pass: process.env.TINYRELAY_SMTP_PASS,
  },
});

await transporter.sendMail({
  from: '"Acme" <no-reply@acme.com>',
  to: "ann@example.com",
  subject: "Reset your password",
  html: "<p>Use this link to reset your password.</p>",
});
PHPMailer
PHP
tinyRelay
DKIM-signed
Recipient
mail server
use PHPMailer\PHPMailer\PHPMailer;

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host     = '[SMTP host]';
$mail->Port     = [port];
$mail->SMTPAuth = true;
$mail->Username = getenv('TINYRELAY_SMTP_USER'); // issued at onboarding
$mail->Password = getenv('TINYRELAY_SMTP_PASS');
// $mail->SMTPSecure = [confirm at onboarding];
$mail->setFrom('no-reply@acme.com', 'Acme');
$mail->addAddress('ann@example.com');
$mail->isHTML(true);
$mail->Subject = 'Reset your password';
$mail->Body    = '<p>Use this link to reset your password.</p>';
$mail->send();
Any client
SMTP settings
tinyRelay
DKIM-signed
Recipient
mail server
# Any SMTP client
Setting        Value
-------------  ------------------------------------------
Host           [SMTP host]
Port           [port]
Encryption     [confirm at onboarding]
Username       issued at onboarding
Password       issued at onboarding
From address   a sender on a domain you shared with us

Illustrative. Host, port and TLS mode are placeholders until published; username and password are issued at onboarding.

How it works

A transactional SMTP relay, in three hops.

Your software keeps doing what it does today. It opens an SMTP connection and hands over a message. The only thing that changes is where that connection goes.

01

Your app connects

Your framework mailer, CMS, server or job queue connects to the relay with the username and password we issue. Nothing else in your stack needs to change.

02

tinyRelay takes the message

The message is sent from a sender domain you shared with us during setup, on the same email delivery infrastructure that runs tinyEmail.

03

The recipient's server receives it

We deliver to the recipient's mail server, signed for your domain with DKIM. Your app does not have to run or maintain a mail server of its own.

What happens to your SMTP mail

An SMTP email service set up around your domains.

Here is what tinyRelay does with the email you hand to the relay, and the one thing still to confirm.

Your sender domains, added for you

During setup you share the senders you will use, and we add their domains to our mail servers. Mail then goes out from your own addresses, such as no-reply@yourdomain.com.

DKIM with one CNAME record

Add one record and your mail is signed for your domain:

tec1._domainkey.yourdomain.com
CNAME → tec1.dkim.tinyemail.com

DNS checked before you send

The API endpoint PUT /domain/dns/check validates DKIM and SPF for a domain and returns the records it expects, so you can confirm setup before your first message. Read about deliverability and domain setup.

Webhooks: ask during setup

Signed webhooks for SEND, DELIVERED, BOUNCED, OPEN, CLICK, UNSUBSCRIBE and SPAM are documented for the REST API. Whether SMTP sends get the same events and metadata is not in the docs yet, so confirm it with our team if you rely on it.

How email webhooks work →
SMTP or API

SMTP relay or the SMTP relay API? Same infrastructure, two doors.

You do not have to pick one forever. Both send from the same domains on the same infrastructure. The difference is how your code talks to us.

SMTP relay

For software that already sends email.

  • No integration code: change host, port and credentials
  • Works with framework mailers, CMSs, servers and SaaS tools that offer custom SMTP
  • One message per SMTP transaction, as your mail library sends it
  • Credentials issued at onboarding

REST API

For code you are writing now.

  • One POST /email/campaign sends to many recipients
  • Per-recipient merge attributes, such as [FIRST_NAME]
  • Up to 10 metadata keys echoed on every webhook event
  • Per-request tracking switch and optional link wrapping
Explore the transactional email API →

Not sure? Answer three questions.

Flip what is true for your app. The suggestion updates as you go.

The email is sent by existing software (a framework mailer, CMS or server).
You need your own IDs per recipient, echoed on every webhook.
You can add a few lines of HTTP code.
Connection details

An SMTP server for developers, without running one.

Every SMTP client asks for the same handful of settings. These are the values you will plug in, and where each one comes from.

Setup steps for each framework are in our guides. The API reference lives in the tinyRelay docs.

SettingValueWhere it comes from
HostValue[SMTP host]Where it comes fromTo confirm
PortValue[port]Where it comes fromTo confirm
EncryptionValue[TLS mode]Where it comes fromTo confirm
UsernameValueIssued to youWhere it comes fromAt onboarding
PasswordValueIssued to youWhere it comes fromAt onboarding
From addressValueA sender on a domain you shared with usWhere it comes fromYour DNS
Use cases

An SMTP service for applications that have to send.

If your app already generates these emails, the relay can carry them today. Each guide shows what to send and which events to watch.

tinyRelay is run by the same company and team as tinyEmail. Use it on its own for the email your app triggers, or alongside tinyEmail for campaigns and newsletters. How tinyEmail and tinyRelay fit together.

FAQ

SMTP relay questions.

Straight answers, including what we are still confirming.

Read the tinyRelay docs →
What is an SMTP relay service?

An SMTP relay service accepts email from your application over SMTP and delivers it to your recipients' mail servers for you. With tinyRelay you point your app's mail settings at our relay using the credentials we issue, and our email delivery infrastructure does the sending.

Submit the Get started form. Setup is done with our team: we add your sender domains, you add one DKIM CNAME record, and we issue your SMTP credentials.

Your connection details are confirmed with you at onboarding, when your credentials are issued. This page shows them as placeholders, [SMTP host] and [port], until they are published in the docs.

Webhook events (SEND, DELIVERED, BOUNCED, OPEN, CLICK, UNSUBSCRIBE and SPAM) are documented for the REST API. If you need the same events and metadata for SMTP sends, confirm it with our team during setup.

Yes. Any framework or tool that can send through an SMTP server with a host, port, username and password can use the relay. Our guides cover Laravel, Django, Rails and Supabase.

Get started

Send transactional email with a service that reports back.

SMTP relay or REST API, standalone or alongside tinyEmail. Tell us what you send and our team sets you up.