mirror of
https://github.com/root-fr/jmap-webmail.git
synced 2026-09-24 16:01:18 +00:00
HTML emails that go through SandboxedEmailFrame render inside an <iframe srcDoc=...>. cloneNode creates a fresh browsing context that reloads srcDoc asynchronously — after beforeprint has already fired and the browser has taken its DOM snapshot for printing — so the printed page saw an empty iframe. Plain-text mail was fine because it renders inline with dangerouslySetInnerHTML (which clones cleanly). When building the print overlay, walk each iframe's live contentDocument.body and move its already-rendered children into a plain div on the clone, copying over the computed font so it looks the same as on screen. No innerHTML on the overlay — nodes are cloned directly, preserving the upstream DOMPurify sanitisation. fix(avatar): skip domain favicons for freemail providers Showing Google's G for every gmail.com sender or Yahoo's logo for every yahoo.com sender misrepresents the individual: the domain belongs to the provider, not to the person. Maintain a small freemail denylist (gmail, outlook, icloud, protonmail, proton.me, yahoo, gmx, web.de, orange.fr, free.fr, etc.) that falls back to the initials avatar regardless of whether the favicon service has an icon for the domain.