Email

In plain words: Reach: Email family

Partial 1 min read 1 glossary terms 8 connected pages
The short version written for the Snayu team

How Reach represents an email request (sender, recipients, subject, content, reply references) and how Gmail and Fastmail each translate it into their own protocol.

Why read it: Read this before working on email request building or adding a mail provider.
  1. 1Gmail uses MIME encoded for its REST API; Fastmail uses JMAP with a separate sending identity.
  2. 2Reads are bounded listings without full bodies; thread-scoped reads refuse rather than widening.
  3. 3Prepared requests carry no login or send authority; accounts and delivery are separate later work.

Partial Request preparation works; account connection and sending do not.

Words on this page, decoded click one for its card

The original text Underlined words open their plain-English card.

Reply to a client from the selected mailbox without changing the application flow when the provider changes. Email owns the request's mail semantics: sender, recipients, subject, content and reply references. Gmail and Fastmail translate that request into different protocols.

EmailTarget names a local connection, a protocol account selector, the sender and exact To/Cc/Bcc recipients. ConnectedPolicy selects the connection and allowed targets, operations and limits. The connection's external account declaration does not authenticate a mailbox.

Provider Account selection Prepared read Prepared send
Gmail mailbox_id = "me"; the declared immutable Google subject remains separate. Bounded message-ID listing, without message bodies. Canonical RFC MIME encoded as base64url, with optional thread and reply headers.
Fastmail mailbox_id is the selected JMAP account ID, not a mailbox folder. Bounded query/get header and preview projection. Exact email creation followed by submission with its sending identity, draft mailbox and SMTP envelope.

MailRequestBuilder has two concrete implementations, GmailRequestBuilder and FastmailRequestBuilder. Callers prepare a read or send; each implementation retains its own identifiers, output and refusal rules. Thread-scoped reads refuse rather than widening into an unrelated mailbox listing. JMAP does not acquire a Gmail-shaped MIME transport.

Connected preparation shows the shared native GraphStep Map and a finite WUPHF announcement. Its result contains application bytes and a provider route selector, with no account authentication or send authority. Accounts and delivery retain the later connected-operation contract.

Reach