View Source Email
Fluid Email Templates
We provide an email template based on Cerberus's Fluid Template. This is a template well-suited for transactional email that has been well-tested on a wide variety of email clients. It should let you send nice looking email from your app without having to think about it a lot.
Branding / Theming
Of course, you might want to customize the style of your emails to match your app's unique look or brand. The trick is that for emails to really work across a broad set of common clients, they need to inline their CSS. We take care of this for you.
You can customize the variables (colors, sizes, etc) in config/email_styles.exs and we'll apply them to your emails.
Mailer
Of course, you may want to send your own emails. We provide two modules to help:
- Legendary.CoreEmail: responsible for generating emails to your specifications
- Legendary.CoreMailer: responsible for sending emails per your configuration
Both are powered by Bamboo so you can follow the Bamboo documentation to learn more about customizing and using email in your app.
Here's an example:
defmodule App.HelloEmail do
import Bamboo.Email
use Bamboo.Phoenix, view: AppWeb.EmailView
def send_hello_email(to) do
to_address
|> hello_email()
|> Legendary.CoreMailer.deliver_later()
end
def hello_email(to_address) do
Legendary.CoreEmail.base_email()
|> to(to_address)
|> render(:hello, to_address: to_address)
end
end
Tip: in development mode, any email you send can be viewed at localhost:4000/sent_emails.
Email Helpers
Fluid email templates don't do any good if the content of your HTML emails isn't also as fluid and well-tested. We provide email tag helpers so that you don't
have to hand-craft email-friendly HTML. See Legendary.CoreWeb.EmailHelpers
.
For example, your hello.html.eex might look something like this:
<%= preview do %>
Have you heard of our awesome app?
<% end %>
<%= h1 do %>
Hello, <%= to_address %>
<% end %>
<%= p do %>
We hope you'll join us.
<% end %>
<%= styled_button href: "http://example.com/" do %>
Join us!
<% end %>
We'll handle generating all of the nested tags and inline CSS needed to make the email look good.