Airmail / Developer guides

Authenticated SMTP Relay

Keep your application's mail library. Change the transport after domain verification and production approval.

Free Developer beta. Verified domain and manual sending approval required.

SMTP settings

Use smtp.airmailai.tech, port 587, STARTTLS required, and the username/password created in your workspace SMTP settings. These are not your dashboard login or REST API key. Keep certificate verification enabled. Do not choose implicit TLS on port 587. SMTP is submission only: it is not an IMAP/POP mailbox. Set a verified From address and monitored Reply-To. Preserve Message-ID and identical MIME content when retrying an uncertain SMTP transaction.

Host: smtp.airmailai.tech
Port: 587
Encryption: STARTTLS (required)
Username: your Airmail SMTP username
Password: your one-time SMTP password

Node.js with Nodemailer

Install nodemailer in a supported Node.js application and save this as send.mjs. Set the four credential/address environment values below and a stable AIRMAIL_MESSAGE_ID such as <account-481-update@example.com>. Replace example.com with your verified domain. Run node send.mjs only for an intended recipient after approval. secure:false selects STARTTLS negotiation, not permission to authenticate without encryption; requireTLS:true makes the upgrade mandatory.

import nodemailer from "nodemailer";

const transport = nodemailer.createTransport({
  host: "smtp.airmailai.tech", port: 587,
  secure: false, requireTLS: true,
  auth: { user: process.env.AIRMAIL_SMTP_USERNAME,
          pass: process.env.AIRMAIL_SMTP_PASSWORD },
  connectionTimeout: 15000, socketTimeout: 30000
});
const result = await transport.sendMail({
  from: process.env.AIRMAIL_FROM,
  to: process.env.AIRMAIL_TEST_RECIPIENT,
  messageId: process.env.AIRMAIL_MESSAGE_ID,
  subject: "Your requested account update",
  text: "Your account update is ready."
});
console.log(result.response);

Choose SMTP or REST deliberately

SMTP suits an application that already builds MIME messages through a framework mailer. REST gives you an explicit msg_* acceptance response and Idempotency-Key. Both enforce tenant approval, sender-domain ownership, quotas, suppressions and provider pacing. SMTP passwords are shown once and can be rotated or revoked in your workspace; never reuse your account password.

Before your first production message

Start with the free Developer beta. Verify your account, create a workspace and add a domain you control: example.com and mail.example.com are both supported. Publish the records shown in Domains. Merge an existing SPF policy rather than adding another; preserve a valid existing DMARC policy. Create an API key after verification, use the dashboard for one owner-controlled validation, and request production approval. SMTP credentials become available after activation. No repository or SSH access is needed.

Know the boundaries

Airmail is a controlled public beta. Production sending requires manual approval. Paid plans remain request-access for general signups; payment never grants sending approval. Monthly allowance, daily safety quota and provider pacing are different limits. Sending is transactional by default; partnership/campaign access needs separate approval and is not a purchased-list service. Dedicated reputation isolation is not currently included. There is no inbox-placement guarantee or published OTP delivery SLA.

Start with one verified domain

All integration guides / Ask about your use case