diff --git a/components/email/email-viewer.tsx b/components/email/email-viewer.tsx index 2843832..e0aa875 100644 --- a/components/email/email-viewer.tsx +++ b/components/email/email-viewer.tsx @@ -524,7 +524,7 @@ export function EmailViewer({ html: '

No content available

', isHtml: false }; - }, [email, allowExternalContent, hasBlockedContent, externalContentPolicy, isSenderTrusted]); + }, [email, allowExternalContent, hasBlockedContent, externalContentPolicy, isSenderTrusted, theme]); // Detect List-Unsubscribe header for newsletter banners const listHeaders = useMemo(() => { @@ -1290,9 +1290,9 @@ export function EmailViewer({ {/* Unified Notification Banner - External Content + Unsubscribe */} {((hasBlockedContent && !allowExternalContent && externalContentPolicy !== 'allow') || (shouldShowUnsubBanner && listHeaders?.listUnsubscribe)) && ( -
+
-
+
{/* External Content Controls */} {hasBlockedContent && !allowExternalContent && externalContentPolicy !== 'allow' && (
@@ -1300,7 +1300,7 @@ export function EmailViewer({ {externalContentPolicy === 'ask' && ( diff --git a/components/email/unsubscribe-banner.tsx b/components/email/unsubscribe-banner.tsx index 2dd7b79..331c47f 100644 --- a/components/email/unsubscribe-banner.tsx +++ b/components/email/unsubscribe-banner.tsx @@ -92,7 +92,7 @@ export function UnsubscribeBanner({ @@ -110,14 +110,14 @@ export function UnsubscribeBanner({ @@ -125,7 +125,7 @@ export function UnsubscribeBanner({ ) : ( diff --git a/lib/email-sanitization.ts b/lib/email-sanitization.ts index c249974..c90dff6 100644 --- a/lib/email-sanitization.ts +++ b/lib/email-sanitization.ts @@ -3,16 +3,18 @@ import DOMPurify from 'dompurify'; /** * Unified DOMPurify configuration for email content * Blocks all script execution vectors while preserving formatting + * NOTE: