Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
/phpunit.xml.dist export-ignore
/phpstan.neon.dist export-ignore
/testbench.yaml export-ignore
/docs/editor.png export-ignore
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ A modular, Outlook-bulletproof email building, auditing, and compilation engine

Build an email from 29 responsive blocks (in code, in a Filament form, or in a drag-and-drop editor), audit it before it goes out, and compile it to inlined HTML, AMP for Email, MJML, or plain text. It is a plain Laravel package: the compiler is PHP, with no Node step at send time.

[![The drag-and-drop editor, with the block palette, a live email preview and the block settings panel](docs/editor.png)](https://odden.io/open-source/mail-builder)

[Try the editor in your browser](https://odden.io/open-source/mail-builder): it is the one in this package, with nothing saved or sent.

Requires PHP 8.3+ and Laravel 12 or 13. Maintained by [CaskStack, LLC](https://odden.io).

**Status:** All 29 slot types are rendered by the compiler, described in the slot schema, and editable in both the Filament builder and the drag-and-drop editor.
Expand Down
Binary file added docs/editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/Support/OutboundUrlGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,11 @@ public function isSafe(string $url): bool

public static function isPublicAddress(string $address): bool
{
return filter_var(
return (bool) filter_var(
$address,
FILTER_VALIDATE_IP,
FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_GLOBAL_RANGE,
) !== false;
);
}

/**
Expand Down
Loading