SMTP Relay
SendPipe provides an SMTP relay for legacy applications that send email via SMTP. Your API key is used as the SMTP password — no additional configuration needed.
Connection Settings
| Host | smtp.sendpipe.io |
| Port | 2525 (or 587 with STARTTLS) |
| Username | anything (ignored) |
| Password | Your API key (sp_live_xxx) |
| Encryption | STARTTLS (optional in dev) |
Integration Examples
import nodemailer from "nodemailer";
import { readFileSync } from "fs";
const transport = nodemailer.createTransport({
host: "smtp.sendpipe.io",
port: 2525,
auth: {
user: "sendpipe",
pass: process.env.SENDPIPE_KEY, // sp_live_xxx
},
});
// Simple email
await transport.sendMail({
from: "hello@yourapp.com",
to: "user@example.com",
subject: "Welcome!",
html: "<h1>Hello!</h1>",
});
// With attachments
await transport.sendMail({
from: "billing@yourapp.com",
to: "client@example.com",
subject: "Your Invoice — March 2026",
html: "<p>Please find your invoice attached.</p>",
attachments: [
{
filename: "invoice-2026-03.pdf",
content: readFileSync("./invoice.pdf"),
contentType: "application/pdf",
},
{
filename: "receipt.png",
path: "./receipt.png", // Nodemailer reads the file
},
],
});How It Works
1. ConnectYour app connects to the SMTP relay and authenticates with your API key as the password.
2. ParseSendPipe parses the full RFC 2822 message — recipients, subject, body, and attachments are all extracted from the MIME structure.
3. ValidateThe sending domain is verified against your project's domain list.
4. QueueThe message (including attachments) is enqueued to the same send queue as the REST API — same routing, same failover.
Attachments
Attachments sent via SMTP are fully supported. Your mail library encodes them as MIME parts, and SendPipe's relay extracts, base64-encodes, and stores them automatically. They're delivered to the provider exactly as they would be through the REST API.
No extra configuration needed. Just use your mail library's standard attachment API (e.g., Nodemailer's attachments array, Django's EmailMessage.attach(), or Rails' attachments[]). The relay handles the rest.
| What happens | Details |
|---|---|
| Your app sends | Mail library encodes attachments as MIME parts in the RFC 2822 message |
| Relay parses | mailparser extracts each attachment with filename, content, and MIME type |
| Relay stores | Attachments are base64-encoded and stored as JSON alongside the message |
| Worker sends | Provider adapter receives attachments and includes them in the outbound email |
Note: The SMTP relay supports email only. For WhatsApp and SMS, use the REST API with the channel field.