/** Détecte les ressources distantes dans le HTML d'un mail. */
const REMOTE_RESOURCE_ATTR =
/\s(?:src|srcset|data-src|data-original|data-srcset|poster|background|data)\s*=\s*["']?(?:https?:\/\/|\/\/)/i
const RELATIVE_RESOURCE_ATTR =
/\s(?:src|srcset|data-src|data-original|href|background|poster)\s*=\s*["'](?!https?:|\/\/|data:|cid:|mailto:|#|javascript:)([^"']+)["']/i
const REMOTE_LINK_STYLESHEET =
/]+href\s*=\s*["']?(?:https?:\/\/|\/\/)/i
const CSS_REMOTE_URL = /url\s*\(\s*['"]?(?:https?:\/\/|\/\/|[^'"data:#][^'")]*)/i
export function htmlHasRemoteContent(html: string): boolean {
if (!html?.trim()) return false
const hasRemoteSignals =
REMOTE_RESOURCE_ATTR.test(html) ||
RELATIVE_RESOURCE_ATTR.test(html) ||
REMOTE_LINK_STYLESHEET.test(html) ||
CSS_REMOTE_URL.test(html)
if (hasRemoteSignals) return true
if (/]/i.test(html)) {
return (
/
]+rel=["']?stylesheet/i.test(html) ||
/