SMTP relay
Point any existing mailer at OutSend and change nothing else about your application.
If you already have a working mailer, the fastest migration is no code at all. The SMTP relay accepts mail from any standard client and puts it through the same sending path, with the same events, as the API.
Settings
| Setting | Value |
|---|---|
| Host | smtp.getoutsend.com |
| Port | 2587 |
| Username | outsend |
| Password | Your API key |
| Encryption | STARTTLS |
The username is literally outsend for every account — your API key is the credential
that identifies you.
Limits
- 50 recipients per message
- 10 MB total attachments
Messages above either limit are rejected at the SMTP conversation rather than accepted and dropped later.
Nodemailer
const transporter = nodemailer.createTransport({
host: "smtp.getoutsend.com",
port: 2587,
auth: {
user: "outsend",
pass: process.env.OUTSEND_API_KEY,
},
})
Rails / ActionMailer
config.action_mailer.smtp_settings = {
address: "smtp.getoutsend.com",
port: 2587,
user_name: "outsend",
password: ENV["OUTSEND_API_KEY"],
authentication: :plain,
enable_starttls_auto: true
}
Django
EMAIL_HOST = "smtp.getoutsend.com"
EMAIL_PORT = 2587
EMAIL_HOST_USER = "outsend"
EMAIL_HOST_PASSWORD = os.environ["OUTSEND_API_KEY"]
EMAIL_USE_TLS = True
What you still get
Mail sent over SMTP is recorded with source: "smtp" and produces exactly the same events
as an API send — deliveries, bounces, deferrals, complaints, and the provider’s own
response on each one. Nothing about observability is API-only.
The from domain still has to be verified. That rule has no exceptions, because it is the
rule that keeps your sending identity yours.