从Heroku部署的Phoenix应用程序发送了重复的电子邮件

zbdgwd5y  于 2022-11-24  发布在  Phoenix
关注(0)|答案(1)|浏览(214)

谢谢你的帮助。我是新来的发展和Phoenix城。
最近,我开发了一个网站,当提交表单时会发送电子邮件。
我在iex环境中测试了这个应用程序,它工作得很好,它只发送一封带有表单信息的电子邮件。但是当我将这个应用程序部署到Heroku时,电子邮件发送了两次,我不知道为什么。
我在mix.exs文件中使用的是带有Bamboo依赖项的SMTP,并且我使用的是Bluehost SMTP配置。
代码如下所示:
mix.exs

defp deps do
[
  {:phoenix, "~> 1.3.2"},
  {:phoenix_pubsub, "~> 1.0"},
  {:phoenix_ecto, "~> 3.2"},
  {:postgrex, ">= 0.0.0"},
  {:phoenix_html, "~> 2.10"},
  {:phoenix_live_reload, "~> 1.0", only: :dev},
  {:gettext, "~> 0.11"},
  {:bamboo, "~> 1.0"},
  {:cowboy, "~> 1.0"},
  {:bamboo_smtp, "~> 1.5.0"}
]
end

config.exs

config :app, App.Mailer,                                                                                                                                                                         
  adapter: Bamboo.SMTPAdapter,                                                                                                                                                                                
  server: "mail.app.com",                                                                                                                                                                                   
  hostname: "app.com",                                                                                                                                                                                      
  port: 26,
  username: System.get_env("USER_ID"),
  password: System.get_env("USER_PASS"),
  tls: :if_available,
  allowed_tls_versions: [:"tlsv1", :"tlsv1.1", :"tlsv1.2"],
  ssl: false,
  retries: 1,
  no_mx_lookups: false,
  auth: :always

email.ex

defmodule App.Email do
  use Bamboo.Phoenix, view: App.EmailView

def contact_email(message) do
  new_email()
  |> from("postmaster@app.com")
  |> to("contacto@app.com")
  |> put_text_layout({AppWeb.LayoutView, "email.html"})
  |> subject("New lead in App")
  |> assign(:message, message)
  |> render("send_email.html")
  |> App.Mailer.deliver_later
end

mailer.exs

defmodule App.Mailer do
  use Bamboo.Mailer, otp_app: :app
end

此外,在我的.gitignore文件中,我忽略了包含环境变量的.env文件,并且我已经在Heroku中使用以下命令设置了它们:
heroku config:set VARIABLE_NAME=variable
我不知道会发生什么,并感谢所有的答案,我可以得到。此外,如果你需要进一步的信息代码,让我知道。

643ylb08

643ylb081#

这只是猜测,但您可能多次调用App.Mailer.deliver_later(或App.Mailer.deliver_now),一次来自App.Email.contact_email,一次来自接收发送的表单数据的控制器操作。
如果是这种情况,从contact_email函数中删除App.Mailer.deliver_later可能是解决方案。

相关问题