OScar.
← Blog

10 November 2026 · 6 min read

Inside my homemade email client

Why I wrote my own mail reader, how it opens every message instantly, and why it strips the fancy styling off every newsletter on purpose.

Email behind the scenes: the Email icon on a hand-drawn sketchbook page with doodles

Most people pick an email app and get on with their lives. I built one. This is a look inside the homemade email client that lives in OScar, my personal life OS. It is a tool I made for myself, to run my own inboxes. It is not for sale, and this is not a pitch. It is a tour of the workshop.

Why would anyone do this? Partly because I already had everything else in one place: notes, files, invoices, a calendar. Mail was the last thing that made me leave. And partly because I had opinions about how mail should feel. Strong ones, it turns out.

What my homemade email client actually does

It connects to the mailboxes I already have. There are ready-made presets for Gmail, iCloud Mail, Zoho, Namecheap's Private Email and Outlook, plus a custom option for anything that speaks the usual mail protocols. Nothing moves away from the provider. My mail still lives where it always lived, and every other app I own still sees it.

Like everything else in OScar, mail belongs to a project. A business project gets its business mailbox, the private project gets my private one. When I open a project, its mail is right there next to its notes and files.

Inside a mailbox you get what you would expect: the inbox and your folders, unread and pinned filters, a full-text search, select-all for bulk clean-ups, and a composer for new mail, replies and forwards. Folders can be created, renamed and deleted from the desk too.

Pages never wait for the mail server

This is the part I am proudest of, and the reason the tool exists at all. Mail servers are slow. Ask one for your inbox and you wait. Ask it again a minute later and you wait again.

So OScar keeps its own copy. A background job checks every mailbox regularly and copies new mail into OScar's own store. When I open the inbox, the page reads that copy. No waiting on a server somewhere. Switching folders, opening a message, going back: all of it is instant.

The important design rule is that the copy is disposable. The provider is always the source of truth. If the copy ever goes wrong, I can throw it away and the sync rebuilds it from scratch. That turned out to be a superpower. When I improve how mail is cleaned up for reading, I wipe the copy, and every old message comes back through the new code.

A few details make the sync feel smart rather than busy:

  • A brand-new mailbox fills in newest first, so the mail I care about shows up in seconds, not after the archive from 2014.
  • Opening the desk gives every inbox a quick extra check, so the numbers are fresh when I look.
  • A message that refuses to download gets a placeholder instead of blocking everything behind it.

Clicks land first, the server catches up

When I star a message, mark it read, move it to spam or delete it, OScar updates its own copy immediately and answers. The matching change on the real mail server happens a moment later, in the background. From my side of the screen it simply feels instant.

Bulk actions work the same way. Select forty newsletters, mark them read, and the provider gets one tidy command instead of forty little ones.

Drafts deserve a mention. When I save a draft, it goes into the real Drafts folder on the provider. If I start a reply on the desk and finish it on my phone's own mail app, it is waiting there. Sending a draft removes it, and the sent mail lands in Sent like it should.

The reading pane is deliberately boring

Here is the opinionated bit. My reading pane strips away the sender's styling. All of it. Fonts, colours, background images, the giant hero banner: gone. Every message is shown in the same calm typography as the rest of OScar.

That sounds like a bug. It is the favourite feature. A marketing email without its branding is just a few sentences and a link, which is usually all it ever was. Mail becomes readable on a phone for free, too, because nothing is fighting the screen width.

Getting there took some detective work on real mail. Newsletters often hide content for some screen sizes and show other content for others, so a naive cleaner would show you both versions stacked on top of each other. The cleaner works out which parts the sender meant to hide and drops them. Invisible padding characters go too, and empty layout scaffolding collapses away.

One lesson came the hard way. An early version read the hiding rules a little too generously and wiped one company's entire email down to a single invisible pixel. The fix was to read those rules much more precisely. Then I wiped the copy, and everything came back clean. Disposable copies, see? Superpower.

A newsletter without its costume is a much shorter newsletter.

Images wait for permission

Remote images are blocked by default. Many of them are not pictures at all but tiny trackers that tell the sender you opened their mail. With images off, they learn nothing.

When I actually want the pictures, a Load images button fetches them through OScar instead of straight from the sender, so my browser never talks to the tracker directly. Plain-text mails get a small treat as well: web addresses inside them become proper clickable links.

Attachments, invoices and the rest of the desk

Attachments are not stored in OScar at all. They stay with the provider and are fetched the moment I click one. That keeps the copy lean, and nothing sensitive sits around twice.

Because the mail lives inside a bigger desk, it can hand things to the other tools:

  • Add to Documents files attachments straight into a folder in my drive. A mail with one attachment is filed in two taps.
  • Create invoice opens the invoice tool with the other person's address already filled in. Reply to a work request, bill it, done.
  • The invoice tool also sends its invoices through these same mailboxes, so the sent copy shows up in Sent where I expect it.

That last point is the real reason a homemade mail client is worth it to me. It is not a better Gmail. It is a mailbox that knows about my invoices, my documents and my projects.

What it does not do (yet)

Being honest about the edges is part of the fun. There is no fancy rules engine and no smart sorting. Every message is a plain, searchable message, and the search is the tool I lean on most. Outlook accounts sign in through Microsoft's own sign-in screen, because Microsoft stopped accepting plain passwords for personal accounts. That one took an afternoon.

Mail content never ends up in error logs either. When something breaks, the log says which mailbox and which message number, never what the message said. It makes debugging slightly harder and my conscience slightly lighter.

Why build it at all?

Because the desk is meant to be the one place I open in the morning. Every tool I pull inside makes the others more useful. Mail was the biggest missing piece, and now it sits next to everything else, quietly and quickly.

If you are curious about the bigger picture, the OScar overview shows the whole desk, and the tools page lists the ones you can actually use. More workshop tours live on the blog.

Thanks for reading. Now go check your inbox. Calmly.

  • email
  • behind the scenes
  • maker diary
  • productivity