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

Hostsmtp.sendpipe.io
Port2525 (or 587 with STARTTLS)
Usernameanything (ignored)
PasswordYour API key (sp_live_xxx)
EncryptionSTARTTLS (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 happensDetails
Your app sendsMail library encodes attachments as MIME parts in the RFC 2822 message
Relay parsesmailparser extracts each attachment with filename, content, and MIME type
Relay storesAttachments are base64-encoded and stored as JSON alongside the message
Worker sendsProvider 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.