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.

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.

Hemen view dosyasını da düzenleyelim.

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

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.