LocaleMailer

Build Status

Handling action mailer view templates can become a bit heavy when your app has to send a lot of different emails

This gem aims at generating email view templates straight from your localization files when no template view is found

This is especially relevant for email views with simple content

Installation

Add this line to your application's Gemfile:

gem 'locale_mailer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install locale_mailer

Usage

Include LocaleMailer::Concern is automatically mixed into ActionMailer::Base during initialization phase.

Considering the following localization file

en:
  my_mailer:
    notify:
      subject: "hello %{user_name}"
      body:
        - line 1
        - line 2
        - '<a href="%{user_link}">Click here</a>'
class MyMailer < ApplicationMailer
  def notify user
    @user_name = "toto"
    @user_link = "http://localhost.local" 
    mail to: user.email
  end
end

MyMailer.notify.subject
> "hello toto"

MyMailer.notify.html_part.decoded
> "<p>line 1</p><p>line 2</p><p><a href=\"http://localhost.local\">Click here</a></p>" 

MyMailer.notify.text_part.decoded
> "\nline 1\n\nline 2\n\nClick here http://localhost.local\n" 

1 - If no template view is found by ActionMailer::Base, LocaleMailer will check if there is some locales specified at mailer_name.action_name per default (or whatever :template_path / :template_name options you passed to the mail method)

2 - Your instance variables (usually available to views) will be passed to I18n.translate for locale interpolation.

3 - If your locale returns an array it will be converted in <p> tags into the html_part

4 - Link tags present into the locale data will be converted to text_content href_content into the text view part of the email, other tags will be stripped

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/itkin/locale_mailer. This project is intended to be a safe, welcoming space for collaboration bla bla bla ...

License

The gem is available as open source under the terms of the MIT License.