Selasa, 25 Februari 2014

ActionMailer ( Part 1 )

ActionMailer memungkinkan Anda untuk mengirim email dari web aplikasi yang Anda buat dengan menggunakan class mailer dan view. Sebagai contoh di sini adalah mengirim email pada halaman list user di Admin.

Berikut ini akan dijelaskan cara setting ActionMailer pada aplikasi Rails :

1. Pastikan sudah ada account email yang akan digunakan untuk mengirim email secara default. Biasanya account email yang digunakan adalah account gmail. Pastikan account gmail tersebut IMAP nya sudah di-enable supaya bisa mengirim email dari aplikasi kita. Pada account gmail Anda, pilih Setting lalu pilih tab Forwarding and POP/IMAP lalu pilih radio button Enable IMAP.



2. Setelah account Gmail tersebut disetting, lalu kita setting mailer SMTP pada aplikasi kita. Ubah file config/environment/development.rb atau config/environment/production.rb  dan ubah sesuai account gmail yang akan diset sebagai pengirim seperti email dan password nya.
#Gmail SMTP
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => 'localhost:3000',
    :user_name            => 'username@email.com',
    :password             => 'yourpassword',
    :authentication       => 'plain',
    :enable_starttls_auto => true  }
Setelah langkah di atas sudah diikuti, lalu kita buat mailernya misalkan user_mailer. Ketikkan pada console 
rails g mailer UserMailer
Seperti yang Anda lihat, Anda dapat menghasilkan mailer seperti Anda menggunakan generator lain dengan Rails. Mailer secara konseptual mirip dengan controller, sehingga kita mendapatkan mailer, sebuah direktori untuk view dan test.

Setelah itu edit mailer yang baru dibuat tersebut dengan set default email dengan alamat email yang sudah ditentukan
class UserMailer < ActionMailer::Base
  default from: "from@example.com"
end
Sebagai contoh, kita buat method welcome_email yang maksudnya mengirim email kepada user yang baru dibuat.
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def welcome_email(user)
   @user = user
   @url = "http://localhost:3000"
   mail(:to => @user.email, :subject => "Welcome to my awesome site")
  end
end
Lalu pada model user, buat callback after_create seperti ini 
class User < ActiveRecord::Base
  after_create :send_welcome_email

  def send_welcome_email(user)
    UserMailer.welcome_email(self).deliver
  end
end
Lalu kita buat viewnya 
<!DOCTYPE html>
<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
  </head>
  <body>
    <h1>Welcome to example.com, <%= @user.name %></h1>
    <p>
      You have successfully signed up to example.com,
      your username is: <%= @user.login %>.<br/>
    </p>
    <p>
      To login to the site, just follow this link: <%= @url %>.
    </p>
    <p>Thanks for joining and have a great day!</p>
  </body>
</html>
Setelah itu, baru kita bisa mencoba membuat user dan email akan terkirim secara otomatis ke user yang baru dibuat.

Sumber lengkap : http://guides.rubyonrails.org/action_mailer_basics.html

Selamat mencoba dan happy coding :)

Tidak ada komentar:

Posting Komentar