【问题标题】:How to fix 'render/2 is undefined' error using Bamboo with Phoenix如何使用 Bamboo with Phoenix 修复“render/2 is undefined”错误
【发布时间】:2019-03-27 22:05:30
【问题描述】:

我正在尝试使用带有 Bamboo(和 Amazon SES)的 html 电子邮件模板为我的 Phoenix/Elixir 应用程序发送电子邮件

我已经使用 Bamboo 的 |> text_body(message) 方法成功发送了电子邮件。但是我现在希望能够发送一个 html 模板而不仅仅是一个字符串,所以我尝试使用 render fn https://hexdocs.pm/bamboo/1.1.0/Bamboo.Phoenix.html#render/3 但我遇到了以下错误:function MyApp.HtmlEmailView.render/2 is undefined (module MyApp.HtmlEmailView is not available)。当我使用text_body fn 时,我的视图没有任何错误。

这是我的fn:

  def send_test_html_email(to_email_address, subject) do
    new_email()
    |> from("myemail@gmail.com")
    |> to(to_email_address)
    |> subject(subject)
    |> render("email.html")
  end

这是来自文档的示例 fn:

  def html_email do
    new_email
    |> render("html_email.html")
  end

我看不出有任何区别,正如我之前提到的,fn 的其余部分在最后一行使用 text_body 而不是 render 时运行良好。

我的预期结果是电子邮件将无错误地发送。我的实际结果是function MyApp.HtmlEmailView.render/2 is undefined (module MyApp.HtmlEmailView is not available) 错误。

【问题讨论】:

  • 根据该错误消息,您没有名为 MyApp.HtmlEmailView 的模块。您能否再次检查调用站点和定义中的模块名称是否有拼写错误?
  • 实现send_test_html_email功能的模块的名称是什么,您是否在该模块中添加了use Bamboo.Phoenix, view: MyApp.HtmlEmailView行?另外,你有MyApp.HtmlEmailView 模块吗?

标签: email elixir phoenix-framework bamboo


【解决方案1】:

感谢 Justin Wood 和 Milan Jaric 的 cmets。

我在模块顶部使用:use Bamboo.Phoenix, view: MyApp.HtmlEmailView,但是由于view: MyApp.HtmlEmailView 需要为view: MyAppWeb.HtmlEmailView,因此导致错误。这解决了这个问题。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 2013-05-25
    • 2018-05-10
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多