SMTP Setup
Send email through Splashify Pro from any app that supports SMTP — WordPress, Django, Magento, Mailchimp Mandrill replacements, n8n, Zapier, Microsoft Power Automate, Apple Mail, Outlook, or any custom backend using a standard SMTP library.
When to use SMTP vs the REST API: SMTP is a drop-in option for legacy apps and most CMS/eCommerce platforms — no code changes, just paste these credentials into your app’s email settings. The Send Email REST API is faster and gives you per-message status polling. Both go through the same DKIM-signed pipeline and bill identically.
Server credentials
| Setting | Value |
|---|---|
| SMTP Host | smtp.splashifypro.com |
| Port (STARTTLS) | 587 (recommended) |
| Port (SSL/TLS) | 465 |
| Encryption | STARTTLS for port 587, SSL/TLS for port 465 |
| Username | emailapikey (fixed string — do not change) |
| Password | Your sk_live_… public API key |
| Auth mechanism | PLAIN or LOGIN |
Username is literally
emailapikey— not your email address, not your account ID. The stringemailapikeytells our SMTP relay that the password field carries an API key (instead of an email/password pair). The actual identity is encoded in the API key itself.
Port 25 is not supported. Most cloud providers block outbound port 25 to prevent spam relay abuse. Use 587 (STARTTLS) or 465 (SSL).
Prerequisites
- Plan with
email_marketingenabled — free during trial; paid plans need the Email Marketing feature flag set on your plan. - A verified sender domain at Settings → Email Domain . The
Fromaddress you set must be on a domain you’ve verified (SPF + DKIM CNAME + DMARC). Without verification the relay rejects with550 5.7.1 sender domain not verified. - A
sk_live_…API key from Settings → Developer . Treat it like a password — anyone holding it can send mail on your behalf.
Sender Information
| Field | Value |
|---|---|
| From Email | Any address on your verified domain (e.g., info@your-domain.com) |
| From Name | Your business / brand name shown in recipients’ inboxes |
Quick verify with swaks
swaks (Swiss Army Knife for SMTP) is the fastest way to confirm credentials work before wiring them into your app:
swaks \
--to recipient@example.com \
--from info@your-verified-domain.com \
--header "Subject: Splashify Pro SMTP test" \
--body "Hello from SMTP relay" \
--server smtp.splashifypro.com \
--port 587 \
--tls \
--auth LOGIN \
--auth-user emailapikey \
--auth-password sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxA 250 2.0.0 Ok: queued as <message-id> response confirms the relay accepted your message.
Platform setup
WordPress (WP Mail SMTP)
- Install the WP Mail SMTP plugin.
- Settings → WP Mail SMTP → Other SMTP.
- Fill in:
- SMTP Host:
smtp.splashifypro.com - Encryption:
TLS - SMTP Port:
587 - Auto TLS: ON
- Authentication: ON
- SMTP Username:
emailapikey - SMTP Password: your
sk_live_…key - From Email: an address on your verified domain
- From Name: your store / brand name
- SMTP Host:
- Save → click Send a Test Email.
PHPMailer
<?php
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.splashifypro.com';
$mail->SMTPAuth = true;
$mail->Username = 'emailapikey';
$mail->Password = 'sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('info@your-domain.com', 'Your Brand');
$mail->addAddress('recipient@example.com');
$mail->Subject = 'Order #1234 confirmed';
$mail->Body = 'Thanks for your order!';
$mail->send();Python (smtplib)
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("Thanks for your order!")
msg["Subject"] = "Order #1234 confirmed"
msg["From"] = "info@your-domain.com"
msg["To"] = "recipient@example.com"
with smtplib.SMTP("smtp.splashifypro.com", 587) as server:
server.starttls()
server.login("emailapikey", "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx")
server.send_message(msg)Node.js (nodemailer)
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: "smtp.splashifypro.com",
port: 587,
secure: false, // STARTTLS upgrade — set true only when using port 465
auth: {
user: "emailapikey",
pass: "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
});
await transporter.sendMail({
from: '"Your Brand" <info@your-domain.com>',
to: "recipient@example.com",
subject: "Order #1234 confirmed",
text: "Thanks for your order!",
html: "<p>Thanks for your order!</p>",
});Django (settings.py)
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.splashifypro.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "emailapikey"
EMAIL_HOST_PASSWORD = "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DEFAULT_FROM_EMAIL = "Your Brand <info@your-domain.com>"Laravel (.env)
MAIL_MAILER=smtp
MAIL_HOST=smtp.splashifypro.com
MAIL_PORT=587
MAIL_USERNAME=emailapikey
MAIL_PASSWORD=sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@your-domain.com
MAIL_FROM_NAME="Your Brand"Magento 2
System → Configuration → Sales → Sales Emails + SMTP On module:
- Host:
smtp.splashifypro.com - Port:
587 - Auth:
Login - Username:
emailapikey - Password: your
sk_live_…key - TLS:
Yes - SSL:
No
n8n / Zapier / Power Automate
Pick the Send Email (SMTP) node and supply the four credentials above. The same form maps 1:1.
Pricing
Same per-email pricing as the REST API — emails sent over SMTP go through the identical pipeline:
| Tier | Marketing | Transactional |
|---|---|---|
| 1k–10k emails/mo | ₹0.040 | ₹0.025 |
| 10k–50k emails/mo | ₹0.030 | ₹0.020 |
| 50k+ emails/mo | ₹0.020 | ₹0.015 |
The first 100 emails per day are free. Above that, your wallet is charged per email.
Marketing vs transactional classification: an SMTP submission is treated as transactional by default (₹0.025/email). If you want it counted as marketing (cheaper-tier campaigns or list-based blasts), use the in-app Campaign builder which stamps the right category.
Deliverability essentials
Email deliverability depends on you setting up DNS correctly on your sending domain. The relay does its part (DKIM signing, IP reputation management, bounce/complaint loops), but recipient inboxes will check yours.
| Record | Required | Purpose |
|---|---|---|
| SPF | yes | Authorises Splashify Pro to send on your behalf. Add include:_spf.splashifypro.com to your existing SPF record (don’t replace). |
| DKIM | yes | Cryptographic signature on every message. Splashify Pro publishes the DKIM key on a CNAME we ask you to add. |
| DMARC | recommended | Tells inboxes what to do with mail that fails SPF/DKIM. Start with p=none to monitor, move to quarantine once stable. |
| MX | already set | Your inbound mail server. Leave as-is. |
Verify all three at Settings → Email Domain before going live.
Limits
| Limit | Value |
|---|---|
| Connection rate per API key | 100 concurrent SMTP connections |
| Recipients per message | 50 (split into multiple RCPT TO) |
| Message size | 25 MB including attachments |
| Daily volume per account | Unlimited (subject to wallet balance + plan flag) |
| Free daily quota | 100 emails (transactional + marketing combined) |
| Connection timeout | 60 seconds idle |
| Auth attempts before lockout | 5 wrong passwords / 5 minutes per IP |
Hitting any limit returns a standard SMTP failure code your library will surface — 421 for connection limits, 550 for content/policy rejections, 535 for auth failures.
Status codes
| Code | Meaning | Action |
|---|---|---|
220 | Server ready | Continue with EHLO |
235 | Auth successful | Send messages |
250 | Message accepted, queued for delivery | Done — poll /public/email/status for delivery confirmation |
421 | Service unavailable / connection limit hit | Back off, retry with exponential delay |
535 | Auth failed | Verify username is literally emailapikey and password is a valid sk_live_… key |
550 | Sender domain not verified, or recipient on suppression list | Verify domain at /settings/email-domain or remove suppression |
552 | Message size exceeds 25 MB | Split attachments |
554 | Wallet balance insufficient | Top up at Wallet |
Tracking sent messages
Every SMTP-sent message is visible in /email under Send Volume (Today / 7d / 30d) and rolled into the Source breakdown → Transactional / API card alongside REST API sends.
Per-recipient delivery status, opens, clicks, bounces, and complaints are written to your account’s audit trail. Pull individual statuses via the REST status endpoint using the Message-ID header that the SMTP server returns in the 250 response.
Security notes
- Rotate API keys if a key has been exposed (committed to git, shared in support channel, etc). Old keys are revocable from Settings → Developer ; SMTP connections using a revoked key get
535 5.7.0 authentication revokedimmediately. - Use environment variables for the password in your code — never hardcode
sk_live_…keys in source files. - Restrict by IP (Pro plan +): pin a key to a list of allowed source IPs from /settings/developer. Connections from outside the list get
535 5.7.0 IP not authorised. - TLS is enforced — connections that don’t upgrade to TLS via STARTTLS get terminated after the EHLO with
530 5.7.0 must issue STARTTLS first.
Troubleshooting
| Symptom | Likely cause |
|---|---|
535 5.7.0 authentication failed | Username isn’t emailapikey, or password isn’t a valid sk_live_… key |
550 5.7.1 sender domain not verified | From: address is on a domain you haven’t verified at /settings/email-domain |
554 5.7.0 wallet balance insufficient | Top up wallet, or sender’s plan doesn’t have email_marketing enabled |
421 4.3.2 connection limit reached | Too many concurrent connections — close idle sessions |
| Connection times out | Firewall blocking 587/465 outbound — many home ISPs and AWS instances block port 25/587 |
| Mail goes to spam | Missing/incomplete SPF or DKIM. Verify at /settings/email-domain . |
530 5.7.0 must issue STARTTLS first | Client connected on 587 without negotiating STARTTLS — enable TLS in your library |
Need help
- Email API troubleshooting
- Sender domain setup
- Email troubleshooting docs
- Or contact support at
support@splashifypro.in.