Install
npm install github:NythralHome/nmail-js#v0.2.0
composer config repositories.nmail vcs https://github.com/NythralHome/nmail-php
composer require nythral/nmail:0.2.0
Customer admin
Complete billing, add domains, confirm DNS records, then create receiving inboxes and sender-only addresses within your package limits.
Setup progress
Domains
Package domain usage appears here after subscription sync. DNS setup, registrar notes, and verification live behind each domain's action buttons.
Add the first domain to start Nmail setup.
DNS records
Open Cloudflare DNS, select your domain, then add the records below with proxy disabled for mail records.
If your registrar uses `@` for the root domain, use `@` instead of the full domain name. Keep DNS-only mode enabled for mail records where the registrar offers proxying. The `_nmail-verify` TXT record proves that this account controls the domain.
Outbound delivery
Direct delivery sends normal mailbox SMTP from the Nmail mail server. Enhanced SES delivery uses Nythral-managed Amazon SES with tenant isolation, DKIM, MAIL FROM records, and reputation monitoring. Sender-only addresses and API sends always use verified SES.
Use the DNS records tab to verify MX, SPF, DKIM, and DMARC for normal Nmail delivery.
Addresses
Create the first inbox after the domain is verified. Sender-only addresses require verified SES.
Aliases
Aliases receive mail and deliver it to existing receiving inboxes. They do not have a password or separate inbox.
Create aliases after at least one receiving inbox exists.
Transactional API
API keys are for server-side transactional email only: OTP, password reset, confirmations, receipts, and account notifications.
Standard keys are tuned for OTP, password resets, confirmations, receipts, and account notifications. Marketing, newsletters, bulk campaigns, purchased lists, and repeated broadcast-like traffic are not supported by this API. Accounts may be paused for Terms of Use review when traffic patterns do not match transactional use.
This key is shown once. Store it in your server environment and never expose it in browser code.
This secret is shown once. Use it to verify the `x-nmail-signature` header.
Install the official server-side package from a stable GitHub tag, keep the API key in your environment, and use an active Nmail address as the sender.
npm install github:NythralHome/nmail-js#v0.2.0
composer config repositories.nmail vcs https://github.com/NythralHome/nmail-php
composer require nythral/nmail:0.2.0
import { NmailClient } from "@nythral/nmail";
const nmail = new NmailClient({
apiKey: process.env.NMAIL_API_KEY
});
await nmail.sendEmail({
from: "app@yourdomain.com",
to: "customer@example.com",
subject: "Your login code",
text: "Your login code is 184209.",
stream: "auth",
idempotencyKey: "login-code:user-123:184209"
});
await nmail.sendEmail({
from: "invoices@yourdomain.com",
to: ["billing@example.com"],
cc: ["owner@example.com"],
subject: "Invoice INV-001",
text: "Please find your invoice attached.",
html: "<p>Please find your invoice attached.</p>",
stream: "billing",
idempotencyKey: "invoice:INV-001",
attachments: [{
filename: "INV-001.pdf",
contentType: "application/pdf",
contentBase64: invoicePdfBuffer.toString("base64")
}]
});
use Nythral\Nmail\NmailClient;
$nmail = new NmailClient(
apiKey: config('services.nmail.key')
);
$nmail->sendEmail([
'from' => 'app@yourdomain.com',
'to' => 'customer@example.com',
'subject' => 'Order confirmed',
'text' => 'Your order was confirmed.',
'stream' => 'notifications',
]);
{
"id": "010001...",
"messageId": "010001...",
"status": "queued"
}
{
"error": {
"code": "ses_domain_required",
"message": "Sender domain must have verified SES delivery before API sending"
}
}
Create a standard key for your backend after SES delivery is verified for the sender domain.
Nmail can POST delivered, bounced, complaint, and rejected events to your application with an HMAC signature.
Create a webhook endpoint for delivery status updates.
Recent sends and provider delivery events. Open tracking is not used.
Recent API and outbox sends will appear here.
Standard keys allow up to 3 recipients per request and are monitored for recipient spikes, repeated content, failed attempts, bounces, complaints, and rejects. Extended access is reviewed separately for higher transactional volume.
Security
Suppression list is based on SES delivery events only. Nmail does not track opens.
Permanent bounces, complaints, and rejects are blocked for this account until manually released.
Delivery protection has not blocked any recipients for this account.
Recent domain, address, API key, delivery, and security changes.
Changes will appear here after account actions are recorded.
Subscription
No active Nmail subscription found for this Nythral ID yet. Start a subscription to unlock domain activation.
1 receiving inbox, 5 sender-only addresses, and guided domain setup.
3 receiving inboxes and 10 sender-only addresses for small teams.
5 receiving inboxes, 20 sender-only addresses, and enhanced SES delivery.
Custom limits, marketing setup, storage, SES migration, and SDK work.
Admin-only usage overview for invoice review.
Support tickets
Create a ticket when a domain, mailbox, sender-only address, API key, billing flow, or delivery event does not work as expected.
Your open and resolved tickets will appear here after the support backend is connected.