Appwrite with Notix as its mail server.
Appwrite sends verification, recovery and invitation emails itself, and lets a project use custom SMTP. Point that at the Notix relay and those emails go out from your verified domain. For email your app writes, call the Notix API from an Appwrite Function.
Send an email from Appwrite.
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
export default async ({ req, res }) => {
const { to } = req.bodyJson;
const { data, error } = await notix.emails.send({
from: "Acme <hello@acme.com>",
to,
subject: "Welcome to Acme",
html: "<p>Glad you are here.</p>",
});
return res.json(error ? { error } : { id: data?.emailId }, error ? 502 : 200);
};
The from address must be on a domain you have verified in Notix. Step by step: the SMTP quickstart.
Or point Appwrite at the relay.
The relay is smtp.usenotix.dev on port 465 (implicit TLS) or 587 (STARTTLS). The username is always notix and the password is your API key, so Appwrite sends through Notix without new code. Mail sent this way gets the same suppression list, tracking and webhooks as the API.
Host: smtp.usenotix.dev
Port: 465 (or 587 with STARTTLS)
Username: notix
Password: your Notix API key
Sender: an address on your verified domain
Questions, answered.
What are the SMTP settings?
Where does the Function keep the key?
Why is my send refused with a from-address error?
Keep reading.
SMTP
Send through the Notix SMTP relay from any app or framework that speaks SMTP.
IntegrationsIntegrations
Notix inside the frameworks, platforms and AI coding tools you already use, from Next.js and Laravel to Supabase, Vercel and Cursor.
ProductEmail API
One JSON API for transactional and marketing email: send, batch, schedule, webhooks, typed SDKs.
NotixPricing
A free plan with no card, and Pro at $15 a month for 50,000 emails. Only sent volume is metered.
Send your first email in five minutes.
Verify a domain, copy an API key, make one call. The free plan does not ask for a card.