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 电子邮件的纯文本版本。