No description
Find a file
luna 50f386bb78 feat: add a Settings entry point and a display name for outgoing mail
There was no way to reopen Settings after first-run setup, and no field
for a display name on sent mail (the actual bug report: "no way to open
settings to change the name").

- AccountSettings gains a display_name field (defaults to "" for configs
  saved before this change).
- SettingsDialog has a "Your name" field, populated/collected like the
  rest of the form.
- OutgoingMessage/SmtpService.build_mime use it to set a proper
  "Display Name <email>" From header when present.
- MainWindow gets a "Settings" toolbar button (settings_requested signal),
  separated from the message actions by a divider.
- AppController.on_settings() opens Settings pre-filled with the current
  account, tests the candidate connection through the same executor used
  elsewhere, saves via ConfigStore on success, and reconnects IMAP/SMTP
  in place (closing the old IMAP connection, swapping in new services,
  updating username/sender_name, reloading folders) without restarting
  the app. Connection construction is injected (imap_connect/smtp_factory)
  so this is unit-testable with fakes.
- run()'s first-run connection test and on_settings' test now share one
  _test_account_connection() helper instead of duplicating the logic.

66/66 tests pass (11 new).
2026-08-11 21:10:04 +02:00
docs/superpowers Add implementation plan for mail client 2026-08-11 16:59:41 +02:00
mailclient feat: add a Settings entry point and a display name for outgoing mail 2026-08-11 21:10:04 +02:00
tests feat: add a Settings entry point and a display name for outgoing mail 2026-08-11 21:10:04 +02:00
.gitignore chore: scaffold project structure and dependencies 2026-08-11 17:02:22 +02:00
pyproject.toml chore: scaffold project structure and dependencies 2026-08-11 17:02:22 +02:00
README.md docs: add README with setup and usage instructions 2026-08-11 20:08:09 +02:00

Mail Client

A desktop IMAP/SMTP mail client built with Python and PySide6.

Setup

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"

Run

.venv/bin/mail-client

On first launch you'll be asked for your IMAP/SMTP server details. Use an app-specific password if your provider requires one (e.g. Gmail, iCloud).

Run tests

QT_QPA_PLATFORM=offscreen .venv/bin/pytest -v

Features

  • Manual IMAP/SMTP account setup with connection test before save
  • Local SQLite cache of folders/messages/attachments for fast, partially-offline browsing
  • Read, compose, reply, forward
  • Attachments: view and send
  • Mark read/unread, delete