Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Send transactional email using SMTP

SMTP reuses your verified email domain and confirmed sender. It is available only when the Convert deployment has enabled and configured the SMTP gateway. If the settings page says SMTP is being prepared, use the email API instead.

Create a credential

  1. Open Settings → Channels → Email → SMTP.
  2. Select an active confirmed sender on a ready domain and create a named credential.
  3. Copy the displayed connection settings and password once. The password cannot be recovered on a later visit.
  4. Configure your application's SMTP client with the shown host, port 587, STARTTLS, and credential username/password.
  5. Submit a controlled real test and inspect SMTP activity and subsequent delivery events.
TLS 1.2 or newer is required, and AUTH PLAIN/LOGIN is available only after STARTTLS. Use the actual host displayed in settings; this guide does not assume the SMTP gateway is enabled on every deployment.

Supported content and restrictions

  • One envelope recipient per message: no CC or BCC.
  • Plain text, HTML, or multipart/alternative containing those text and HTML parts.
  • Maximum encoded MIME size: 1 MiB; subject up to 200 characters.
  • No attachments or embedded images, encrypted/signed MIME, or customer-defined delivery headers. Link to files instead.
  • From and envelope sender must match the credential's confirmed sender.
  • Reply-To must be absent or match that sender's confirmed Reply-To.
Convert uses the configured sender display name and derives delivery identity from your workspace. Customer X-SES-*, tracking, and other unsupported MIME headers are not forwarded.

Example client configuration

With an installed Nodemailer client, use these settings and the exact credential values shown in Convert. secure: false here selects STARTTLS on port 587; requireTLS: true prevents cleartext submission.
const transport = nodemailer.createTransport({ host: process.env.CONVERT_SMTP_HOST, port: 587, secure: false, requireTLS: true, auth: { user: process.env.CONVERT_SMTP_USERNAME, pass: process.env.CONVERT_SMTP_PASSWORD } });

Acceptance, retries and activity

250 Accepted; id=cmsg_... means provider acceptance, not inbox delivery. Inspect the receipt and provider delivery events. Byte-identical MIME and envelope from the same credential can reuse the receipt; new intentional sends need a new Message-ID.
Known temporary quota/throttle rejection returns 451. Sender/recipient/content errors and insufficient balance return permanent 5xx failures that need correction. Uncertain outcomes can also return 451 on repeat attempts but are not automatically dispatched again; inspect the receipt before retrying blindly.
Activity records receipt metadata and outcomes, not the original email body/subject or password. Keep your application's own permitted message record if you need one for support.

Rotate safely

Create a replacement credential, update the client, verify submission, then revoke the original. Revocation blocks future authentication/submission, while already accepted or in-flight work may still complete.
SMTP remains transactional and honors existing unsubscribe and suppression policies. It is not a way to bypass campaign consent rules.