✨ New Features
- Mailcow Integration - Connect Mailcow instances and provision dedicated IMAP app passwords for selected mailboxes, including retry and revocation. Thanks to @tilwegener
- Complete Message Download & Original Message Storage - Download any archived email as a complete
.emlthrough the REST API (GET /emails/{id}/eml) and the MCP server (get_email_eml). WithRawMessages:Enabled(off by default) the original message is stored as received and returned byte for byte byGET /emails/{id}/rawandget_email_raw, including its SHA-256 and capture source @kipp-ing - MP4 Attachment Preview - MP4 and M4V attachments can be played in the attachment preview dialog, including seeking. Thanks to @anonimitoraf
- Chinese Language Support - Complete Simplified Chinese translation with automatic
zh/zh-Hansbrowser detection. Thanks to @wolfbolin - Brazilian Portuguese Language Support - Complete Brazilian Portuguese translation, selectable in the language menu. Thanks to @mvldebian
- Japanese Language Support - Complete Japanese translation, selectable in the language menu. Thanks to @ikawa-ohno
🐛 Bug Fixes
- EML Import Failing with "interval out of range" - Importing messages whose
Date:header is malformed or out of range no longer aborts the job with a PostgreSQL22008error. The import now uses the shared date fallback chain (Date header, then theReceivedchain, thenResent-Date) instead of MimeKit's raw value, and everySentDate- written or compared - is restricted to a plausible range of 1970 to 2100. This also fixes duplicate detection against rows an earlier version wrote with a year-1 date. - Leftover Client Secret on Provider Switch - Switching an account to Microsoft Personal (MSA) now drops a stored client secret instead of sending it with every token refresh, e.g. after switching from Microsoft 365 or when falling back to the shared default client ID.
- Export of Emails with Non-Standard Addresses - Emails whose stored sender or recipient is not a valid email address (e.g. an Exchange X.500 DN such as
/O=EXCHANGELABS/.../CN=RECIPIENTS/CN=...) are no longer skipped during EML/MBox export. The original value is preserved in anX-MailArchiver-Original-From/-To/-Cc/-Bccheader, and valid addresses next to it are kept. - Restore Keeps Original Addresses - Restoring to IMAP no longer replaces an unparsable sender or recipient with a placeholder address (
sender@example.com/recipient@example.com); the original value is preserved in a header instead.