2015-11-28 70 views
0

我真的不知道什麼是錯的。我有一個RoR服務器,我將定期通過電子郵件向用戶發送通知。我打電話Rails代碼目前要做到這一點的方法是:Rails 4.2郵件程序問題 - 無法讓郵件工作

$ bundle exec rails r "ProjectDueMailer.test_email" 

這是郵件代碼:

class ProjectDueMailer < ApplicationMailer 
    default from: '<email>@gmail.com' 

    def test_email 
    mail(to: '<email>@gmail.com', subject: "This is a test!") 
    puts "email sent" 
    end 
end 

顯然正確的電子郵件取代<email>。同樣,配置是:

config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    user_name: '<email>@gmail.com', 
    password: '<password>', 
    authentication: "plain", 
    enable_starttls_auto: true } 

每當我像這樣運行rails runner,沒有任何反應。它坐了一會兒,然後我得到下一個shell行。如果我改變def test_emaildef self.test_email,我得到的錯誤:

undefined method 'mail' for ProjectDueMailer:Class

我真的在這裏損失。我有test_email.html | text.erb文件,我使用rails g mailer ProjectDueMailer生成了郵件程序,所以有ApplicationMailer類。我究竟做錯了什麼?

回答

1

要發送電子郵件,你應該叫deliver_now方法:

ProjectDueMailer.test_mail.deliver_now 
+0

這是它!立即送貨!現在我有SMTP身份驗證問題,但這完全是另一個問題!謝謝你,先生。 – Bronze