getodden/mail
getodden/mail is a Laravel package that simplifies sending and managing email in PHP applications. It provides a clean, straightforward API for composing messages, configuring mail delivery, and integrating email workflows into your Laravel projects with less boilerplate.
composer update getodden/mail. There is no new dependency to install — the icons ship inlined in resources/js/editor/icons.js (Heroicons v2 outline, MIT).php artisan vendor:publish --tag=mail-builder-assets --forcephp artisan filament:assetsMailBuilder::embedCidImages() / CidImageEmbedder::embed() with a base path, add a quick smoke test after upgrading: an in-base relative src should still be embedded, while ../secret, file://, php://, protocol-relative //host/x.png, and oversized or non-image files must now be left untouched.groups contains key and label.short_label, group, and description.groups for headings and ordering, slot.group for membership, slot.short_label for compact tile labels, and slot.description for tooltips and search.php artisan filament:assets after upgrading. The block forms also show the new per-block icons, including the four slots that gained their own glyph: three_column (squares-plus), order_receipt (receipt-percent), dynamic_feed (arrow-path), and labeled_divider (ellipsis-horizontal).icons.js alongside the other editor assets. odden-mail-editor.js now imports it.groups, short_label, group, or description should still render as one list with no headings, full labels, and a fallback icon.embedCidImages($html, basePath: storage_path('app/mail-assets')), with images authored as paths relative to that directory.embedCidImages($html) without a base path and behavior is identical to before.--force overwrites published files. If you have customized published editor assets, back them up or move customizations into your own asset pipeline before republishing.icons.js is a likely failure point when self-hosting editor files. Ensure odden-mail-editor.js can resolve its import; if your bundler or CDN rule set includes editor files by glob, add the new module explicitly.groups exists. Older exports or externally supplied schemas may omit the new keys; fall back to a single ungrouped list.src such as ../secret could attach a file from outside the base directory. Update as soon as practical if you pass a base path with HTML you do not fully control (imported templates, CRM/user content, third-party APIs).file:///… or php://… src will now silently stay a remote URL in the output. Audit any templates relying on those and convert them to paths relative to the base directory.storage for offenders and downscale before embedding.mail-assets directory), not base_path() or storage_path(). The hardening prevents escaping the base path, but a wide base path still permits reading anything you put inside it.How can I help you explore Laravel packages today?