Skip to content

Commit 7d7ae4f

Browse files
committedMar 7, 2025
Continue to use Mochiweb for non-MJML campaigns because of compatibility issues
1 parent 6d4054b commit 7d7ae4f

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed
 

‎lib/keila/mailings/builder.ex

+12-2
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ defmodule Keila.Mailings.Builder do
187187
) do
188188
html_body =
189189
html_body
190-
|> Html.parse_document!()
190+
|> Html.parse_document!(html_parser: Floki.HTMLParser.Mochiweb)
191191
|> Html.apply_inline_styles(styles, ignore_inherit: true)
192192
|> Html.to_document()
193193

@@ -365,9 +365,19 @@ defmodule Keila.Mailings.Builder do
365365
defp maybe_put_tracking(email, _campaign, %{id: @placeholder_recipient_id}), do: email
366366

367367
defp maybe_put_tracking(email, campaign, recipient) do
368+
# NOTE: This is necessary because Lexbor seems to be breaking the block template.
369+
# So let's stick to Mochiweb except for MJML campaigns
370+
html_parser =
371+
if campaign.settings.type == :mjml and
372+
function_exported?(Floki.HTMLParser.FastHtml, :__info__, 1) do
373+
Floki.HTMLParser.FastHtml
374+
else
375+
Floki.HTMLParser.Mochiweb
376+
end
377+
368378
html =
369379
email.html_body
370-
|> Floki.parse_document!()
380+
|> Floki.parse_document!(html_parser: html_parser)
371381
|> put_click_tracking(campaign, recipient)
372382
|> put_open_tracking(campaign, recipient)
373383
|> put_tracking_pixel(campaign, recipient)

‎lib/keila/templates/html.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ defmodule Keila.Templates.Html do
2222
Parses a HTML document and returns an HTML tree,
2323
"""
2424
@spec parse_document!(String.t()) :: t()
25-
def parse_document!(html) do
26-
Floki.parse_document!(html)
25+
def parse_document!(html, opts \\ []) do
26+
Floki.parse_document!(html, opts)
2727
end
2828

2929
@doc """

0 commit comments

Comments
 (0)