-
Notifications
You must be signed in to change notification settings - Fork 0
Emails
Emailleri olustumak icin Rails’in icinde gelen ActionMailer’i kullaniyoruz. Actionmailer’in urettigi email, production’da Sendgrid uzerinden, clientta “sendmail” uzerinden gidiyor.
Bir email atmamiz gerektiginde emaili direkt trigger etmek yerine bir MailJob
yaratiyoruz boylece request beklememis oluyor.
. Ornek (kullanici yaratildiktan sonraki hook) : user.rb
def after_create_hook
begin
# UserMailer.signup(self).deliver
Delayed::Job.enqueue MailJob.new("UserMailer", "signup", self)
rescue
end
end
MailJob
calistiginda UserMailer.signup(self).deliver
metodunu cagiriyor.
Emailleri clientta test etmek icin rails c
diyerek sunucuyu baslatin.
Data sonra herhangibir mailer'i direkt cagirabilirsin. (localde sendmail'in kurulu olmasi gerekiyor, mac'lerde zaten kurulu geliyor)
> rails c
> u = User.find_by_email("yigit@benvarim.com")
> UserMailer.signup(u).deliver
Emailleri app/mailers
'in altindaki objeler hazirliyor. burada onemli olan, mail atarken ayni emailin bir html bir de text versiyonunu hazirlamak.
Ornek olarak Payment success emailine bakarsak,
def after_create_hook
begin
Delayed::Job.enqueue MailJob.new("PaymentMailer", "thanks", self)
rescue
end
end
Bir Payment yaratildiktan sonra, yeni bir MailJob job'i yaratiyor. Bu job calistiginda PaymentMail.thanks(payment).deliver
metodunu cagiriyor.
PaymentMailer
in thanks
methodu gerekli objeleri db'den cektikten sonra yeni bir mail yaratiyor (yaratiyor, gondermiyor). Maili yaratirken, app/views/payment_mailer/thanks.*
templatelarini kullaniyor (bu zaten ActionMailer'in standard setupi, biz ozel birsey yapmiyoruz).
PaymentMailer.thanks emaili yarattiktan sonra donen objeden deliver
'i cagiriyoruz, mail gidiyor :)