- Shipped
- October 29, 2026 at 4:02 AM UTC
- Author
- Kamo
- Commit
- a1c6ce3
rspamd's scan of 76 recent kamouniverse.com messages, fixed where each is built: - MIME_HTML_ONLY (75/76): every body is now multipart/alternative with a text/plain version first, read off the HTML when the caller wrote none (PlainTextRenderer: blocks as lines, links as "text (url)", images and hidden text left out). Inline images keep the standard nesting: mixed > alternative > [text/plain, related > [html, images]], then attachments. SmtpOnlyProvider now builds its body through MimeMessageFactory too instead of sending HTML alone. DKIM-signed and verified on the new shape in DkimSignerTest. - MID_RHS_NOT_FQDN (59/76): MimeMessageFactory.compose mints the Message-ID at the From's domain whenever the caller gives none, instead of Jakarta Mail's **************** pod-hostname default. Covers every NoReply, campaign and transactional send. - Bogus Reply-To **************** EmailTemplateService pointed replies at the org's NoReply whenever it sent from the platform, whatever the org's domain row was. It now does so only for an ownership-verified domain under a real public suffix (RoutableDomain, Guava's Public Suffix List), and compose drops any Reply-To address on any path whose domain mail cannot reach. - ZERO_FONT / MANY_INVISIBLE_PARTS: the canonical templates' colour bands and gaps are `font-size:0` cells holding an . Rewritten at send time to font-size:1px (only cells whose whole content is ), so org copies already in the database are covered. The article-share preheader uses the standard hidden pattern (mso-hide:all instead of opacity:0). Also maps WELCOME_SET_PASSWORD to the ACCOUNTS NoReply subsystem (stale test).
