2011-12-06 28 views
1

最新の出来事について、毎週メールをすべてのユーザーに送信する必要があります。私はActionMailerを使って他のメール作成作業を行っていますが、毎週メールを自動化する方法はわかりません。アクションメール経由で自動的にメールを送信するRails 3.1

更新

私は、cronジョブをスケジュールするために使用することができwhenever宝石を発見しました。私は、これが私が意図している毎週の電子メールを送信するために使用できると思います。 schedule.rb

- :それでも私は

アップデート2溶液に

を見つけたら、これは私がwhenever宝石を使用して、これまでにやっていることですが更新されます、それはactionmailerのと連携させる方法を探してusers_mailer.rb

def weekly_mail(email) 
    mail(:to => email, :subject => "Weekly email from footyaddicts") 
end 
every 1.minute do 
    runner "User.weekly_update", :environment => 'development' 
end 

私はコンソールからUser.weekly_updateを実行しようとusers.rb

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

は私がメールを取得することができています。私は開発モードでrvmを使ってテストしています。私は私のcrontabファイルをチェックし、それは正しいものを持っています。

しかし、私はアプリから自動的にメールを受け取っていません。何が間違っているかもしれませんか?

おかげで、

答えて

2

OKこれは、gemを使用するたびにパスの問題となり、別のバージョンのrubyをインストールしたときに問題が発生しました。

私のマシンでは、新しいルビーバージョンが/ usr/local/bin/ruby​​にインストールされています。私のレールアプリでは、スクリプト/ railsファイルに行き、#!/ usr/bin/env ruby​​を#!/ usr/local/bin/ruby​​に置き換えなければなりませんでした。

私は、このエラーメッセージを示しcron.logファイル訪問して、これを見つけた: - 私はcronのをログに記録するcron.logファイルを作っそのようなファイルやディレクトリはありません

:は/ usr/binに/ ENV:ルビーこれは私が自分のスケジュールでやったことです。質問に書かれたrbコード: -

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

私は現在定期的なメールを受け取っています。

0

あなたはactionmailerの設定を設定していないように思えます。 まず、メールプロセスが動作しているかどうか(ログを貼り付ける)、コンソールからログをチェックアウトします。 はいの場合は、次の手順を実行します。

これをあなたのgemfileに追加してください。

bundle install 

gem 'tlsmail' 

実行があなたの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

私はメールを受け取っていません。後でメールを送信しようとするとメールが届きません。私は毎週メールを配信するために私が使用している宝石をいつでも悪いと思っています –

+0

この宝石を使って電子メールを送る時のペーストログ –

+0

これはログに記録されているエラーです/ usr/bin/env:ruby:Noそのようなファイルまたはディレクトリ –

関連する問題