Skip to content

Instantly share code, notes, and snippets.

@psahni
Forked from wrburgess/gist:3767468
Created July 7, 2014 10:46
Show Gist options
  • Save psahni/f784d68e14fdd48b727b to your computer and use it in GitHub Desktop.
Save psahni/f784d68e14fdd48b727b to your computer and use it in GitHub Desktop.

Generate a Mailer Model and View

In terminal:

rails g mailer UserMailer

or create a mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
  layout 'mailer_default'

  def user_email(user)
    body          { user: user, url: "http://example.com/login" }
    charset       "utf-8"
    content_type  "text/html"
    from          Settings.mailer.from
    recipients    user.email
    sent_on       Time.now
    subject       "User Email Example"
  end
end

Create Mailer Templates

create a layout for emails as views/layouts/mailer_default.html.haml

!!!
%html{ lang: "en" }
  %head
  %body
    #wrapper
      #header
        = render :partial => "shared/mailer_header_default"
      #content
        = yield
      #footer
        = render :partial => "shared/mailer_footer_default"

create a partial for the email header at views/shared/_mailer_header_default.html.haml

%p
  This is header content

create a partial for the email footer at views/shared/_mailer_footer_default.html.haml

%p
  This is footer content

create a view for emails as views/user_mailer/user_email.html.haml

%p 
  This is the content of the User Email

Designate ActionMailer to recognize HAML files

Add to config/environments.rb

ActionMailer::Base.register_template_extension('haml')

Create Settings for Mailer

Add to file config/settings.yml

mailer:
  from: "FirstName LastName <[email protected]>"
  address: "smtp.gmail.com"
  port: 587
  domain: "gmail.com"
  user_name: <%= ENV["MAILER_USERNAME"] %>
  password: <%= ENV["MAILER_PASSWORD"] %>
  authentication: "plain"
  enable_starttls_auto: true

Initialize Mailer Settings

create a file name config/intializers/mailer_settings.rb

ActionMailer::Base.smtp_settings = {  
  address:              Settings.mailer.address,  
  port:                 Settings.mailer.port,  
  domain:               Settings.mailer.domain,  
  user_name:            Settings.mailer.user_name,  
  password:             Settings.mailer.password,  
  authentication:       Settings.mailer.authentication,  
  enable_starttls_auto: Settings.mailer.enable_starttls_auto  
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment