pelago/emogrifier
Emogrifier converts CSS from blocks and stylesheets into inline style attributes in HTML. Ideal for HTML email rendering in clients with poor CSS support (e.g., Outlook, Gmail), ensuring consistent styling across email and mobile readers.
render() methods will now throw an exception upon an internal error
from DOMDocument, instead of returning an empty string (#1588)sabberworm/php-css-parser >= 9.3.0 (#1575, #1582, #1583)Content-Type (#1518, #1519)meta element in head (#1519)Content-Type (#1518)sabberworm/php-css-parser version 9.1.0 or higher (#1465)sabberworm/php-css-parser version 9.0.0 or higher
(#1399, #1418, #1421):root pseudo-class (#1306)sabberworm/php-css-parser:^8.7.0 (#1355)sabberworm/php-css-parser:^8.4.0 (#1134).editorconfig (#1035)align attribute of <th> elements with CssToAttributeConverter
(#1008)sabberworm/php-css-parser to parse the CSS (#1015)[@import](https://github.com/import) after ignored invalid [@charset](https://github.com/charset) (@1081)<html> tag (#987)master to main (#951)http-equiv Content-Type in <body> (#961).editorconfig file (#940)tests/ with Psalm (#885)!important from style attributes also when uppercase, mixed case or
having whitespace after ! (#911):...of-type without a type to the <style> element (#904).0 version suffixes to PHP version requirements (#881)[@font-face](https://github.com/font-face) rules into head (#870):only-of-type (with a type) (#849, #856)$this to allow chaining
(#824, #854)--stop-on-failure (#782)self as the return type for fromHtml (#784)Emogrifier class (#774):last-of-type etc. without type, without causing exception (#875)<head> element when there's a <header> element (#844, #853)ci:php:lint on Windows (#740, #780)addExcludedSelector()
(#347, #768):optional or :required are copied to the <style>
element (#748, #765):only-of-type are copied to the <style> element
(#748, #760):last-of-type (#748, #758):first-of-type (#748, #757):empty (#748, #756):any-link are copied to the <style> element
(#748, #755):only-child (#747, #754):nth-last-of-type (#747, #751):nth-last-child (#747, #750)display: none elements with -emogrifier-keep class (#252, #737)[@import](https://github.com/import) rules (#338, #334, #732, #735)HtmlPruner::removeRedundantClassesAfterCssInlined (#380, #724):not(…) as an entire selector (#469, #725)HtmlPruner::removeRedundantClasses (#380, #708)> :first-child and > :last-child in selectors (#384, #720)ArrayIntersector class (#708, #710)CssInliner::getMatchingUninlinableSelectors (#380, #707):nth-child and :nth-of-type (#71, #698)symfony/css-selector (#762)HtmlPruner::removeInvisibleNodes to
HtmlPruner::removeElementsWithDisplayNone (#717, #718)Pelago\Emogrifier\Utilities namespace (#712)$css parameter of the inlineCss method optional (#700)Emogrifier class (#701)enableCssToHtmlMapping and disableInvisibleNodeRemoval (#692)<style>
element, #746)html input[disabled]) (#375, #709)style attributes for unparsable declarations (#259, #702):not(:behavioural-pseudo-class) in selectors (#697, #703)HtmlPruner class (#679)AbstractHtmlProcessor::fromDomDocument (#676)AbstractHtmlProcessor::fromHtml (#675)<wbr> elements by default with CssInliner (#665)CssInliner inherit AbstractHtmlProcessor (#660)CssInliner::inlineCss and the rendering (#654)CssInliner (#685)CssInliner (#684)<body> tag from body content when element has attribute(s)
(#677, #683)CssConcatenator (#670)<embed>, <source>,
<track> and <wbr> (#653)<wbr>) tags (#650):nth-child selector (#648)style element the head (#642)composer.jsonrenderBodyContent() method (#633)getDomDocument() method (#630)[@internal](https://github.com/internal) (#640)setHtml() (#622)[@version](https://github.com/version) PHPDoc annotations (#637)composer.json (#614)composer.json (#595)[@media](https://github.com/media) rule and another [@media](https://github.com/media) rule (#534)[@media](https://github.com/media) rules (
#532)[@import](https://github.com/import) rules in the CSS without error (note:
[@import](https://github.com/import)s are currently ignored, #527)[@charset](https://github.com/charset) in the CSS without error (note: its value is currently
ignored, #507)<style> block from <head> to <body> (#396)composer.json, cleaner PHP version constraint:) and semi-colon (;) when using the *= selector (#371)How can I help you explore Laravel packages today?