2011-12-06 36 views
1

我必須每週向所有用戶發送關於發生的最新事情的電子郵件。我正在使用ActionMailer來完成其他郵件任務,但我不知道如何自動化每週的電子郵件。通過動作郵件自動發送郵件Rails 3.1

更新

我發現whenever寶石可能被用於調度cron作業。我想這可以用來發送我打算每週發送的電子郵件。還在尋找如何使它與工作的ActionMailer會更新一次,我找到解決辦法

更新2

這是我做了什麼至今使用whenever寶石: -

在schedule.rb

every 1.minute do 
    runner "User.weekly_update", :environment => 'development' 
end 

在users_mailer.rb

def weekly_mail(email) 
    mail(:to => email, :subject => "Weekly email from footyaddicts") 
end 

在users.rb的

def self.weekly_update 
    @user = User.all 
    @user.each do |u| 
     UsersMailer.weekly_mail(u.email).deliver 
    end 
end 

,如果我嘗試從控制檯運行User.weekly_update我能夠獲得郵件。我正在開發模式下測試並使用rvm。我檢查了我的crontab文件,它有正確的東西。

但是我沒有從應用程序自動收到任何郵件。任何線索可能是錯誤的?

謝謝,

回答

2

好吧,所以事實證明,每當寶石出現問題時,問題就出現在我安裝另一個版本的ruby時。

在我的機器中,新的ruby版本安裝在/ usr/local/bin/ruby​​中。在我的Rails應用程序中,我必須轉到文件腳本/ rails,並用#!/ usr/local/bin/ruby​​替換#!/ usr/bin/env ruby​​。

我發現了這一點,通過訪問cron.log文件,這表明此錯誤消息: - 在/ usr/bin中/ ENV:紅寶石:沒有這樣的文件或目錄

我做了一個cron.log文件,記錄的cron錯誤,這是我在我的日程安排中所做的。rb代碼寫在問題: -

every 2.minutes do 
    runner "User.weekly_update", :environment => 'development', :output => 'log/cron.log' 
end 

我現在正在收到定期的郵件。

0

看起來好像你還沒有配置ActionMailer的設置。 首先檢查控制檯中的日誌,郵寄過程是否正常(粘貼日誌)。 如果是,則執行以下步驟。

將此內容添加到您的gem文件中。

gem 'tlsmail' 

運行

bundle install 

在你的config /環境/ development.rb文件寫這些配置設置

require 'tlsmail' 
    Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) 
    ActionMailer::Base.delivery_method = :smtp 
    ActionMailer::Base.perform_deliveries = true 
    ActionMailer::Base.raise_delivery_errors = true 
    ActionMailer::Base.smtp_settings = { 
     :address => "smtp.gmail.com", 
     :port => "587", 
     :domain => "gmail.com", 
     :enable_starttls_auto => true, 
     :authentication => :login, 
     :user_name => "<address>@gmail.com", 
     :password => "<password>" 
    } 

config.action_mailer.raise_delivery_errors = true 

增加對user_name和密碼,你的工作密碼/電子郵件。 不要忘記重新啓動服務器。

+0

我收到郵件,否則它只是當我嘗試安排在稍後發送的電子郵件時,我沒有收到任何郵件。我想這是我每次使用gem發送每週郵件的錯誤實現 –

+0

使用此gem' –

+0

發送電子郵件時粘貼日誌這是我在日誌/ usr/bin/env中獲得的錯誤:ruby:No這樣的文件或目錄 –