π§Mailgun
Mailgun Setup Tutorial
# Mailgun Configuration
MAILGUN_API_KEY=your_mailgun_api_key
MAILGUN_DOMAIN=https://api.mailgun.net/v3/your-domain.comLast updated
defmodule PhxSaas.Mailer do
use Mailgun.Client,
domain: Application.get_env(:mailgun, :domain),
key: Application.get_env(:mailgun, :api_key)
alias PhxSaas.Templates.EmailTemplates
def deliver_user_instructions(recipient, subject, body) do
case send_email(
to: recipient,
from: "#{Application.get_env(:phx_saas, :saas_name)} <mailgun@#{Application.get_env(:phx_saas, :domain)}>",
subject: subject,
html: body
) do
{:ok, _metadata} -> {:ok, _metadata}
{:error, _reason} -> notify_admin(subject, recipient)
:ok -> IO.puts "Email sent successfully"
end
end
def notify_admin(subject, user) do
{:ok, _metadata} =
send_email(
to: Application.get_env(:phx_saas, :email),
from: "#{Application.get_env(:phx_saas, :saas_name)} <mailgun@#{Application.get_env(:phx_saas, :domain)}>",
subject: subject,
text: "Failed to send instructions to user: #{user.email}"
)
end
end
PhxSaas.Mailer.deliver_user_instructions("recipient@gmail.com", "Test", """<h1> This is a test email </h1>""")