πŸ“§
Emails
Open up email.ex and you will see a list of functions that generate Swoosh email structs. Eg:
def confirm_register_email(email, url) do
base_email()
|> to(email)
|> subject("Confirm instructions")
|> render_body("confirm_register_email.html", %{url: url})
|> premail()
end
If I run this function in IEX I can see the Swoosh struct:
An Swoosh.Email struct can be delivered to an email address by a Swoosh mailer (see mailer.ex). Eg:
Remindly.Email.confirm_register_email(user.email, url)
|> Remindly.Mailer.deliver()
So email.ex creates the Swoosh structs and the functions for actually delivering emails like the previous code example are in user_notifier.ex. Think of email.ex functions like view templates, and user_notifer.ex functions like controller actions.
So the steps to creating a new email will be:
  1. 1.
    Create the function to generate a Swoosh struct in email.ex
  2. 2.
    Ensure it looks good by navigating to "http://localhost:4000/dev/emails" and creating a new action in email_testing_controller.ex that simply renders the html_body value of the struct
  3. 3.
    Create a new user_notifier.ex function for use in our application
To see a more detailed write up on creating an email - see this section in the "Complete web app" guide.
Copy link