โ† All projects
In progress v0.1.0 Updated In development

EthaMail

A bring-your-own-mailbox email client. Point it at any IMAP account and it works.

TypeScriptReactFastifyIMAP

Connecting an account

The connect screen takes IMAP host, SMTP host, port, username and password. The server verifies both legs before saving anything, so a bad SMTP port fails at connect time rather than on the first send.

How the server holds state

One API server owns every IMAP connection. Clients never talk to a mail server directly, which is what makes the Tauri and Capacitor targets thin rather than full rewrites.

Folders and sync

Folders are read from the server's own list. There is no local mirror yet; the client fetches on demand and caches in memory for the session.

Sending

Sends go through nodemailer using the SMTP details from the same account. The sent copy is appended to the IMAP Sent folder by the server, not by the client.

POST /api/messages
{
  "to": ["someone@example.com"],
  "subject": "Re: the thing",
  "text": "..."
}