Released May 25, 2026 — downloads for this release
The message body now has spell check enabled. Misspelled words are underlined with the standard red squiggle. Press F7 to jump to the next misspelling; press Shift+F7 to go back to the previous one.
Spell check is built on the Windows spell-checking engine, the same one used by WordPad and other Windows applications. No configuration needed.
Screen reader announcements: As you navigate through the message body with arrow keys, QuickMail automatically detects when the caret enters a misspelled word and announces it through your screen reader. When the “Announce spelling suggestions” setting is on (the default), you hear the word and up to three suggestions — for example, “Misspelling: recieve. receive, relieve, retrieve.” When the setting is off, only the misspelled word is announced.
Quick replacement: When a misspelling is announced, press Alt+1, Alt+2, or Alt+3 to replace the word with the first, second, or third suggestion. QuickMail announces “Replaced with receive.” and moves on. This lets experienced users correct errors without opening a context menu.
Settings: A new “Announce spelling suggestions” checkbox in Tools → Settings → Screen Reader Announcements controls whether suggestions are spoken. Turn it off for faster, quieter spell checking once you know the Alt+number workflow.
Each account now has a Signature field in Account Settings. Enter any plain-text signature — your name, title, phone number, or a full closing block — and QuickMail automatically appends it to the end of every new message, reply, and forward from that account.
Signatures follow the standard -- \n convention, so
email clients that recognize signature separators will display them
correctly. Drafts that are re-opened for editing do not get a duplicate
signature — the signature is only added when the compose window first
opens.
To set a signature, open File → Manage Accounts, select an account, and fill in the Signature field at the bottom of the settings form.
When someone sends you a meeting invitation (an ICS file attachment), QuickMail now displays an Event Invitation card directly in the reading pane — above the message body. The card shows:
Three buttons let you respond: Accept, Tentative, or Decline. Each generates a proper ICS reply and sends it back to the organizer via SMTP. The entire flow works from the keyboard — Tab to the card, Tab between buttons, Enter to respond.
Screen readers announce the full event summary when the card receives focus, and a confirmation is announced after each response.
A new keyboard tutorial is available off the Help Menu. It allows you to try some of the important keyboard commands for QuickMail and get feedback that you pressed the correct keys.
| Step | Shortcut | What it does |
|---|---|---|
| 1 | F6 | Cycle focus through all panes |
| 2 | Ctrl+1 | Focus the account list |
| 3 | Ctrl+2 | Focus the folder tree |
| 4 | Ctrl+3 | Focus the message list |
| 5 | Ctrl+Shift+P | Open the Command Palette |
| 6 | Escape | Close the reading pane or dismiss dialogs |
Each step announces the instruction through your screen reader, waits for you to press the correct key, then confirms success and moves to the next step. Press Escape at any time to exit the tutorial.
Once completed, the tutorial does not appear again. You can replay it at any time from Help → Keyboard Tutorial.
Save common responses as templates and insert them with a few
keystrokes. Templates are stored in
%APPDATA%\QuickMail\templates.json.
Inserting a template: In the compose window, activate the Insert Template… button. A searchable list appears — type to filter by title, press Down to move into the list, and press Enter to insert. The template body is appended to your message.
Saving a template: Compose a message you want to reuse, then activate Save as Template. The subject line becomes the template title (or “Untitled” if the subject is empty).
Placeholders: Templates support three placeholders that are filled in automatically when inserted:
| Placeholder | Replaced with |
|---|---|
{sender} |
Your display name (or email address if no display name is set) |
{date} |
Today’s date |
{time} |
The current time |
Placeholders are case-insensitive — {Sender},
{SENDER}, and {sender} all work.
text/calendar MIME parts and displayed as an inline event
card. ICS replies are generated and sent via SMTP.{sender},
{date}, and {time} are replaced automatically
when a template is inserted.RebuildActiveGroupView() to replace 12 repeated if-else
chains. Extracted ReplaceCts() helper for proper
CancellationTokenSource disposal.GroupedMessageTreeController to eliminate ~30
near-duplicate event handlers across the three tree views
(ConversationTree, SenderGroupTree, ToGroupTree).ConfigModel.ParseViewMode(),
ConfigModel.ParseSort(), and their
ToConfigString() counterparts now handle all string↔︎enum
conversion in one place, replacing six duplicate switch statements.ContactService and ViewService.PARTSTAT values.SmtpService and
TemplateService are now injected into
MainViewModel and ComposeViewModel
respectively.IcsModelTests.cs (30 tests),
TutorialViewModelTests.cs (14 tests),
TemplateServiceTests.cs (15 tests),
TemplatePickerViewModelTests.cs (15 tests),
ComposeViewModelTemplateTests.cs (16 tests).Steps.Count binding in TutorialOverlay.xaml
was missing Mode=OneWay, causing an
InvalidOperationException when WPF tried to write to the
read-only ObservableCollection<T>.Count property.
Fixed by adding explicit one-way binding mode.SelectionChanged handler doesn’t fire with a stale caret
position.