Current status
Open. This issue tracks an upstream contribution to Cocoanetics/SwiftMail, followed by synchronization of TabMail's deviation-free SwiftMail fork.
TabMail should not carry a private fork-only remedy. The defects remain valid upstream even where TabMail has an app-side mitigation or a separately tracked app-owned surface.
The canonical technical record contains the current pin, reachability census, evidence, constraints, and related app-owned work:
Upstream work required
- Correct SwiftMail's RFC 2047 header encoder so control-bearing values cannot be emitted literally.
- Bound encoded-words to the RFC 2047 75-octet ceiling without splitting invalid UTF-8.
- Correct all filename and content-type MIME parameter interpolation sites, with an upstream-compatible quoting/RFC 2231 policy.
- Add upstream regression tests for the full library surface, including sites not currently reached by TabMail.
- Submit the fix to Cocoanetics/SwiftMail rather than introducing a TabMail-only fork deviation.
- After upstream accepts and releases the remedy, synchronize TabMail's SwiftMail fork and update the app pin through the normal fork-sync workflow.
App-owned behavior and compatibility decisions remain tracked separately under IOS-COMPOSE-002 and IOS-COMPOSE-003; they do not replace the upstream library fix.
Completion criteria
Non-goals
- A permanent TabMail-only SwiftMail deviation.
- Closing the tracker as “not planned” solely because the work belongs upstream.
- Treating the app-side mitigations as proof that SwiftMail is fixed for other callers.
Current status
Open. This issue tracks an upstream contribution to Cocoanetics/SwiftMail, followed by synchronization of TabMail's deviation-free SwiftMail fork.
TabMail should not carry a private fork-only remedy. The defects remain valid upstream even where TabMail has an app-side mitigation or a separately tracked app-owned surface.
The canonical technical record contains the current pin, reachability census, evidence, constraints, and related app-owned work:
Upstream work required
App-owned behavior and compatibility decisions remain tracked separately under IOS-COMPOSE-002 and IOS-COMPOSE-003; they do not replace the upstream library fix.
Completion criteria
Non-goals