Notix
Integrations

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.

The send

Send an email from Appwrite.

An Appwrite Function (Node.js runtime)
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.

SMTP relay

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.

The project's custom SMTP settings
Host:     smtp.usenotix.dev
Port:     465 (or 587 with STARTTLS)
Username: notix
Password: your Notix API key
Sender:   an address on your verified domain
FAQ

Questions, answered.

What are the SMTP settings?
Host smtp.usenotix.dev, port 465 for implicit TLS or 587 for STARTTLS, username notix, and your Notix API key as the password. The from address must be on a domain you have verified in Notix.
Where does the Function keep the key?
In the Function's environment variables, set in its settings. Read it from process.env in the handler; it never reaches a client.
Why is my send refused with a from-address error?
The from address must be on a domain you have verified in Notix. Add the domain in the console, publish the DNS records it shows, and wait for verification; until then, sends from that domain are refused.

The free plan does not ask for a card.

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.