Saturday, July 16, 2016

Action Mailer with Devise and Gmail





https://launchschool.com/blog/handling-emails-in-rails
https://sendgrid.com/docs/Integrate/Frameworks/rubyonrails.html

[] create mailer mailers/user_notifier_mailer.rb add lines

class UserNotifierMailer < Devise::Mailer default :from => 'pseudoreza@gmail.com' # send a signup email to the user, pass in the user object that contains the user's email address def send_signup_email(user) @user = user mail( :to => @user.email, :subject => 'Thanks for signing up for our amazing app' ) end end


[] edit /config/environments/development.rb add lines

config.action_mailer.delivery_method = :smtp # SMTP settings for gmail config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :user_name => ENV['gmail_username'], :password => ENV['gmail_password'], :authentication => "plain", :enable_starttls_auto => true }

[] edit /config/environments/production.rb add lines
config.action_mailer.delivery_method = :smtp # SMTP settings for gmail config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :user_name => ENV['gmail_username'], :password => ENV['gmail_password'], :authentication => "plain", :enable_starttls_auto => true }

[] create controller registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController def create # Create the user from params @user = User.new sign_up_params if @user.save # Deliver the signup email UserNotifierMailer.send_signup_email(@user).deliver redirect_to(new_user_session_path, :notice => 'User created') else render :action => 'new' end end end

[] edit config/initilizers/devise.rb add line
config.mailer = 'UserNotifierMailer'

[] modify routes.rb
devise_for :users, path_names: {sign_in: "login", sign_out: "logout"}, controllers: { registrations: 'registrations' }




Video

1 comment: