Error sending email using mailgun adapters with swoosh


I was trying to add email to this newly setup phoenix 1.7.7 app. I’ve used bamboo before in the my past projects but this time i want to use the swoosh lib that comes with phoenix.

I was reading tutorials and other threads here about some simple set up and fixes but i encounter this error

(UndefinedFunctionError) function is undefined (module false is not available)

I found a thread here Issues Sending Emails with Swoosh - #3 by ScriptyScott

that mentions about error and how he fixes it but that approach seems not working for me.

Any idea?

Can you show your code?

Hello sir, sorry for the late response. Here are my codes…

# config/config.exs
config :swoosh, :api_client, Swoosh.ApiClient.Hackney

config :hello, Hello.Mailer,
  adapter: Swoosh.Adapters.Mailgun,
  api_key: "my-api-key",
  domain: "domain-here"
# lib/hello/mailer.ex
defmodule Hello.Mailer do
  use Swoosh.Mailer, otp_app: :hello

# lib/hello/email.ex
defmodule Hello.Email do
  import Swoosh.Email

  def welcome() do
    |> to({"John", ""})
    |> from({"Jake", ""})
    |> subject("Hello, World!")
    |> html_body("<h1>Hello World</h1>")
    |> text_body("Hello World\n")

# hello_web/controllers/page_controller.ex
alias Hello.{Email, Mailer}

def index(conn, _params) do
    Email.welcome() |> Mailer.deliver()
    render(conn, :index)

Just to make sure – did you add hackney to your mix.exs list of dependencies?

Notice that this thread and others linked to it say that you must also add gen_smtp if you use non-SMTP adapter to deliver emails.

Yes sir, i have gen_smtp and hackney dependencies installed.

In dependecy section, it states

" Mailgun adapter requires Plug to work properly."

I don’t know if it just requires to install plug or have to create some function plugs (and i dont know what to write in those plugs) to work