Gmail ile SMTP methoduyla rails projemizde nasıl mail gönderebiliriz sorumuza cevap bulacağımız bir yazı.
Başlıkta özellikle gmail diye belirtmemin sebebi, bu yazının gmail’den smtp ile gönderilmeye çalışırken alınan NET::SMTPAuthenticationError hatasına çözüm barındırmasıdır. Kendi sunucunu için de smtp ayarlarını girerseniz, yine çalışacaktır.
Şuan localde çalıştığımız için config/environments/development.rb dosyasına ActionMailer ayarlarını girelim.
1 2 3 4 5 6 7 8 9 10 |
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :user_name => 'EPOSTA_ADRESİ', :password => 'PAROLA', :authentication => "plain", :enable_starttls_auto => true } |
Buradan sonra ilgili gmail hesabınıza https://mail.google.com üzerinden giriş yapın ve aşağıdaki bağlantıları ziyaret ederek daha az güvenli uygulamalara erişimi etkinleştirin ve smtp gönderimi için captcha doğrulamasını kapatın
https://www.google.com/settings/security/lesssecureapps
http://www.google.com/accounts/DisplayUnlockCaptcha
Eğer buradaki işlemi uygulamazsınız SMTPAuthenticationError hatası alacaksınız.
Ayarları yaptık, şimdi Mailer oluşturalım rails g mailer ReportMailer
ardından hemen test edebiliriz.
1 2 3 4 5 6 7 |
class ReportMailer < ApplicationMailer default from: '"İSİM" <EPOSTA_ADRESİ>' def send_report end end |
Hemen view dosyasını da düzenleyelim.
1 |
Bu bir test mailidir. <b>HTML</b> |
Burada ekstra bir bilgi verelim. Şuan çok basit bir html mail şablonu bu ancak daha karışık şablonlarda önizleme yapmak için şu yolları izlemelisiniz.
—Ekstra Bilgi—
Öncelikle test/mailers/previews dizininde report_mailer_preview.rb dosyasına bir method eklemelisiniz. Örnek verecek olursak
1 2 3 4 5 6 |
# Preview all emails at http://localhost:3000/rails/mailers/report_mailer class ReportMailerPreview < ActionMailer::Preview def sample_mail_preview ReportMailer.send_report end end |
Dosyanın en üst satırında da belirtildiği gibi http://localhost:3000/rails/mailers/report_mailer adresinden method adıyla erişebilirsiniz. Mevcut örneğimiz için link şu şekilde http://localhost:3000/rails/mailers/report_mailer/sample_mail_preview
—Ekstra Bilgi Sonu—
Controller’da ReportMailer.send_report.deliver
dediğinizde mail gönderilecektir.
Bir cevap yazın