Sending HTML Mail
Rails is great at generating HTML, so of course ActionMailer can generate HTML. It works almost like generating text messages, but with a few more details. Because some users really prefer text email messages, this demonstration will give them a choice. The form in app/views/awards/show.html.erb used to request the email, previously shown in Example 17-5, will have an extra checkbox. This extra component sets a parameter identifying whether to send “rich text” (really HTML) email, highlighted in Example 17-6. (This code is in ch17/student011.)
Example 17-6. Adding a checkbox for choosing whether to send HTML or text email
<% form_tag email_student_award_path(@student, @award) do %><p><%= check_box_tag :use_html %><label for="use_html">Use rich text?</label></p><%= submit_tag 'Email me this award' %> <% end %>
The email method in awards_controller, previously shown in Example 17-2, grows a little more
complex to support the checkbox’s new :use_html parameter, as shown in Example 17-7.
Example 17-7. Providing controller support for sending HTML-based email, when desired
def email
@award = @student.awards.find(params[:id])
if params[:use_html]
AwardMailer.deliver_html_certificate(@award, current_user.email)
else
AwardMailer.deliver_certificate(@award, current_user.email)
end
flash[:notice] = "Email has been sent"
redirect_to([@student, @award])
endIf the checkbox was checked, the user wants rich text, and so the
controller calls AwardMailer’s
deliver_html_certificate ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access