No description
- Python 100%
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). |
||
|---|---|---|
| docs/superpowers | ||
| mailclient | ||
| tests | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
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