Firstly, I would like to say thank you for your help. But unfortunately, I have done everything literally the same, and it is still not working. Error from browser:
# function Mailer.deliver_now/1 is undefined (module Mailer is not available)
and from console:
[error] #PID<0.642.0> running RewardappWeb.Endpoint (connection #PID<0.621.0>, stream id 6) terminated
Server: localhost:4000 (http)
Request: POST /add/2
** (exit) an exception was raised:
** (UndefinedFunctionError) function Mailer.deliver_now/1 is undefined (module Mailer is not available)
Mailer.deliver_now(%Bamboo.Email{assigns: %{}, bcc: nil, cc: nil, from: "rewardapp@gmail.com", headers: %{}, html_body: nil, private: %{}, subject: "You were granted points!", text_body: "You were granted some points! To check, log into your account!", to: "dag.kaz@gmail.com"})
(rewardapp 0.1.0) lib/rewardapp_web/controllers/grant_controller.ex:144: RewardappWeb.GrantController.update/2
(rewardapp 0.1.0) lib/rewardapp_web/controllers/grant_controller.ex:1: RewardappWeb.GrantController.action/2
(rewardapp 0.1.0) lib/rewardapp_web/controllers/grant_controller.ex:1: RewardappWeb.GrantController.phoenix_controller_pipeline/2
(phoenix 1.6.6) lib/phoenix/router.ex:355: Phoenix.Router.__call__/2
(rewardapp 0.1.0) lib/rewardapp_web/endpoint.ex:1: RewardappWeb.Endpoint.plug_builder_call/2
(rewardapp 0.1.0) lib/plug/debugger.ex:136: RewardappWeb.Endpoint."call (overridable 3)"/2
(rewardapp 0.1.0) lib/rewardapp_web/endpoint.ex:1: RewardappWeb.Endpoint.call/2
(phoenix 1.6.6) lib/phoenix/endpoint/cowboy2_handler.ex:54: Phoenix.Endpoint.Cowboy2Handler.init/4
(cowboy 2.9.0) /Users/mateuszosinski/Desktop/elixir/rewardapp/deps/cowboy/src/cowboy_handler.erl:37: :cowboy_handler.execute/2
(cowboy 2.9.0) /Users/mateuszosinski/Desktop/elixir/rewardapp/deps/cowboy/src/cowboy_stream_h.erl:306: :cowboy_stream_h.execute/3
(cowboy 2.9.0) /Users/mateuszosinski/Desktop/elixir/rewardapp/deps/cowboy/src/cowboy_stream_h.erl:295: :cowboy_stream_h.request_process/3
(stdlib 3.17.1) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
mailer.ex :
defmodule Rewardapp.Mailer do
use Bamboo.Mailer, otp_app: :rewardapp
end
mail.ex
defmodule Rewardapp.Email do
import Bamboo.Email
import Bamboo.Phoenix
def rewardEmail(user) do
base_email()
|> to(user)
|> subject("You were granted points!")
|> text_body("You were granted some points! To check, log into your account!")
|> Mailer.deliver_now()
end
defp base_email() do
new_email()
|> from("rewardapp@gmail.com") # Set a default from
end
end
The way I am trying to use it (in gran_controller.ex, RewardappWeb.GrantController)
Email.rewardEmail(userEmail) |> Mailer.deliver_now()
IO.inspect(Rewardapp.Email.rewardEmail(userEmail))
And this is how my mail looks like (or ought to, taken from logs)
1. %Bamboo.Email{assigns: %{}, bcc: nil, cc: nil, from: "rewardapp@gmail.com", headers: %{}, html_body: nil, private: %{}, subject: "You were granted points!", text_body: "You were granted some points! To check, log into your account!", to: "kamig@gmail.com"}