Elixir Phoenix 电子邮件渲染 css 和布局
Elixir Phoenix email render css and layout
我刚刚写了一个 phoenix 电子邮件渲染器。当我通过应用程序发送电子邮件时,外部 css 没有得到呈现,而且 mailer.html 布局也没有被拾取。
下面是我做错了什么吗?
def invitation_email(conn, to_email) do
html = View.render_to_string(MailerView, "invitation.html", layout: {LayoutView, "mailer.html"}, conn: conn)
send_email to: to_email,
from: "hi@#{conn.host}",
subject: "Invitation from #{conn.host}!",
html: html
end
我觉得这很好。您确定不只是电子邮件客户端没有加载 css 吗?我认为大多数不会加载外部 css,因此您需要将其放入 <style>
标记中。
我会在 html = ...
行之后放置一个 IO.inspect(html)
并在调用该函数时检查输出。这是否包括布局和 css?
我们在我工作的初创公司也遇到过这个问题,问题可能是样式没有内联。某些电子邮件客户端不支持样式表,因此您必须在每个标签中指定 css 样式。我最近发布了 Smoothie,它会自动执行这种内联样式转换,因此 html 模板可以保持干净。此外,它还会创建 html 电子邮件的纯文本版本。
我刚刚写了一个 phoenix 电子邮件渲染器。当我通过应用程序发送电子邮件时,外部 css 没有得到呈现,而且 mailer.html 布局也没有被拾取。
下面是我做错了什么吗?
def invitation_email(conn, to_email) do
html = View.render_to_string(MailerView, "invitation.html", layout: {LayoutView, "mailer.html"}, conn: conn)
send_email to: to_email,
from: "hi@#{conn.host}",
subject: "Invitation from #{conn.host}!",
html: html
end
我觉得这很好。您确定不只是电子邮件客户端没有加载 css 吗?我认为大多数不会加载外部 css,因此您需要将其放入 <style>
标记中。
我会在 html = ...
行之后放置一个 IO.inspect(html)
并在调用该函数时检查输出。这是否包括布局和 css?
我们在我工作的初创公司也遇到过这个问题,问题可能是样式没有内联。某些电子邮件客户端不支持样式表,因此您必须在每个标签中指定 css 样式。我最近发布了 Smoothie,它会自动执行这种内联样式转换,因此 html 模板可以保持干净。此外,它还会创建 html 电子邮件的纯文本版本。