v2.2.1 · Native Go + mygo controls

Every mailbox.
One quiet inbox.

ccmail is a quiet, focused email client for multiple accounts: Gmail, QQ Mail, 163, Outlook, iCloud and any IMAP / SMTP service, unified in a single window. The interface is drawn with native Go controls — no web frontend — and your credentials never leave this machine unencrypted.

Free & open source macOS · Windows · Linux Single binary English / 简体中文 UI No telemetry
Q G W
Compose

Unified Inbox

154 messages · 3 accounts

AllUnreadStarredAttachments
Today
G GitHub14:32 [CarlOpenLab/ccmail] Release v2.2.1 published carlopenlab released v2.2.1 in CarlOpenLab/ccmail…Work
Y Yiran Lin13:05 Re: Sidebar collapse animation At 200ms the icon fade-in timing feels just right…
V Vercel11:48 Deployment ready: docs-site Deployment succeeded for project docs-site…Personal
C Chen Mo09:21 Weekly report & next week's plan Whole UI moved to native controls this week; stress tests next…Team
Yesterday
H Hang SuYesterday Sync on the 2.2 release window Once the tag is pushed CI builds all three installers…
A App Store ConnectYesterday Your monthly bill is ready October's developer membership bill is ready…Personal
Load more (50 / 154)
Weekly report & next week's plan
C Chen Mochenmo@example.com Yesterday, 09:21
Reply Reply all Forward

Hi all, this week's progress: the entire UI now runs on mygo native controls — sidebar, list, reader and composer are all drawn by Go, and scrolling finally keeps up. HTML bodies go through whitelist sanitizing in an embedded WebView; scripts and remote images are blocked by default.

> Sidebar collapse animation down to 200ms — icons fade in place instead of sliding.

Two things for next week:

  • the release pipeline for all three platforms (tag-triggered, artifacts attached to the Release);
  • edge cases for incremental sync via UIDVALIDITY + UIDNEXT.

Details in the attachments — reply directly with any questions.

2.2 release checklist.xlsx load-test notes.md
Providers

Your mail, ready out of the box

Popular providers ship preconfigured, and any custom IMAP / SMTP works too. The setup wizard connects to the server and verifies your credentials for real; accounts mount immediately and keep syncing in the background.

Gmail QQ Mail 163 / 126 Outlook / M365 iCloud WeCom Mail Alibaba Mail Custom IMAP / SMTP

QQ, Gmail, 163 and friends require an app-specific password instead of your web login password — the wizard shows guidance for each provider.

Why ccmail

Native, therefore quiet

No Electron, no embedded web frontend — every pane is drawn natively by Go. The overhead it saves turns into startup speed and scrolling that keeps up.

Drawn natively

Sidebar, message list, reader, composer and settings are all painted by Go through mygo/ui — no page routing, no frontend build; HTML bodies render in an embedded system WebView.

Instant push

One IMAP IDLE connection per account watches the inbox, so new mail arrives the moment it lands. Servers without IDLE fall back to polling automatically, with connections renewed every 25 minutes.

Sanitized rendering

HTML bodies pass a Go whitelist first: scripts, iframes, forms and on* handlers are stripped. Remote images stay blocked by default with one-click loading, and CID images become local data URLs.

Rich composing

Bold, italic, underline, lists, links and paste formatting, drag-and-drop attachments and + Enter to send. Reply, reply-all and forward are one keystroke away; sent mail is archived automatically.

Unified accounts

A unified inbox and starred views, accounts color-coded and one click away in the title bar. The list keeps loading older mail as you reach the bottom. Incremental sync via UIDVALIDITY + UIDNEXT, envelopes cached locally, bodies fetched on demand.

At home on the desktop

Desktop notifications with sender and subject — click to focus the window. Tray menu, programmatic app icon, light / dark / follow-system, and a sidebar that collapses to icons (B).

Keyboard

Hands on the keys

Read one, archive one, jump to the next — the actions you repeat all day each live on a single key. Search, sidebar and composing stay on your fingertips too.

Press ? in the app to see the full list at any time.

Previous / next messageJK
Open messageEnter
ComposeN
ReplyR
Reply allA
ForwardF
StarS
ArchiveE
DeleteDel
Search/K
Collapse sidebarB
Send message↵
Appearance

Graphite monochrome, four washes

Primary buttons, selected rows, focus rings and unread badges each get their own step of gray — no single blue running through every level. On top of that, the window background offers four Oklab-tuned gradient washes, tuned separately for light and dark.

Mist雾
Rex雷克斯
Meadow草甸
Dusk暮色
Privacy

Privacy is the default, not an option

No accounts, no tracking. ccmail does one thing: deliver your mail to your inbox.

Encrypted storage

Credentials are encrypted with AES-256-GCM, keyed from your machine's data/secret.key. They exist only on your computer — never on any server.

Remote content blocked by default

HTML bodies are sanitized before they reach the embedded WebView: scripts, iframes, forms and event handlers are stripped. Remote images stay unloaded until you allow them.

No stats, no telemetry

Nothing phones home, and nothing is written outside data/. Delete the folder for a complete reset — your mail cache never leaves the machine.

Download

Download ccmail 2.2.1

GitHub Releases carries installers for macOS, Windows and Linux — or build straight from source with Go.

$ git clone https://github.com/CarlOpenLab/ccmail && cd ccmail
$ go build -o ccmail . && ./ccmail # Go 1.27+, run directly
$ go tool mygo build # installers: dmg / Setup / tar / deb

Installers are ad-hoc signed for now: on macOS, right-click → "Open" the first time; Windows may show a SmartScreen prompt — confirm to run.