Heroku部署的Phoenix应用程序已发送重复电子邮件
谢谢你的帮助。我是开发和凤凰城的新手 最近我开发了一个网站,在提交表单时发送电子邮件 我在iex环境中测试了该应用程序,效果很好,它只发送一封包含表单信息的电子邮件。但是当我将应用程序部署到Heroku时,电子邮件会被发送两次,我不知道为什么 我在mix.exs文件中使用带竹依赖项的SMTP,并且使用Bluehost SMTP配置 下面是代码的样子: mix.exsHeroku部署的Phoenix应用程序已发送重复电子邮件,heroku,elixir,phoenix-framework,phoenix,Heroku,Elixir,Phoenix Framework,Phoenix,谢谢你的帮助。我是开发和凤凰城的新手 最近我开发了一个网站,在提交表单时发送电子邮件 我在iex环境中测试了该应用程序,效果很好,它只发送一封包含表单信息的电子邮件。但是当我将应用程序部署到Heroku时,电子邮件会被发送两次,我不知道为什么 我在mix.exs文件中使用带竹依赖项的SMTP,并且使用Bluehost SMTP配置 下面是代码的样子: mix.exs defp deps do [ {:phoenix, "~> 1.3.2"}, {:phoenix_pubsub, "
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配置:设置变量\u NAME=VARIABLE
我不知道会发生什么,我很感激能得到的所有答案。另外,如果您需要进一步的代码信息,请告诉我。这只是一个猜测,但您可能稍后会多次致电App.Mailer.deliver\u或App.Mailer.deliver\u。一次来自App.Email.contact_电子邮件,一次来自接收已发布表单数据的控制器操作
如果是这种情况,以后从联系人电子邮件功能中删除App.Mailer.deliver\u可能是解决方案。我们需要更多信息。你怎么称呼联系人和电子邮件?您是否有日志/是否尝试添加日志?你的发帖请求只发送了一次吗?结果我让发帖请求发送了两次,一次在App.Email.contact_Email中,另一次在controller中。愚蠢的错误,谢谢你的帮助。这就是发生的事情。我在控制器中复制了请求,但我仍然不明白为什么在本地测试中它只发送一封带有相同代码的邮件。无论如何,我纠正了它,并在生产中完美地工作了。非常感谢。