4

私はいつでもgemを使用して、Railscronジョブに電子メールを送信させています。すべてが正常に機能しているようで、cron.logまたはproduction.logファイルにエラーはありませんが、電子メールを受信することはありません。メールアドレスも正しいことを確認しました。

どんな助けでも大歓迎です。

Production.logファイルには次のものが含まれています。

Connecting to database specified by database.yml
  Rendered email_mailer/send_birthday_reminders.html.erb (5.3ms)

Sent mail to tomcaflisch@gmail.com (409ms)

これが私のいつでもgemschedule.rbファイルです

set :output, "#{path}/log/cron.log"

every :hour do
    runner "BirthdayRemindersController.send_birthday_email_reminders"
end

Birthday_reminders_controller.rb

class BirthdayRemindersController < ApplicationController

    # cron job that sends birthday reminders
    def self.send_birthday_email_reminders 
        users = User.all

        email_addresses = []

        users.each_with_index do |user, i|
            if user.user_details.birthday_reminders == true
                email_addresses[i] = get_primary_email(user)
            end
        end
        p "email_addresses to send to:"
        p email_addresses

        users.each do |user|
            p "this user is"
            p user.user_details.full_name
            if user.user_details.birthday.try(:strftime, "%m") == Date.today.strftime("%m") && user.user_details.birthday.try(:strftime, "%d") == Date.today.strftime("%d")
                p "reminder sent"
                EmailMailer.send_birthday_reminders(user, email_addresses).deliver
            end
        end
    end
end

email_mailer.rbスニペット

class EmailMailer < ActionMailer::Base
  include ApplicationHelper
  default :from => "\"FamNFo\" <no-reply@mysite.com>"

  def send_birthday_reminders(birthday_person, email_addresses)
    p "we in send_birthday_reminders mailer"
    p email_addresses
    @birthday_person = birthday_person
    mail(:subject => "Birthday Reminder For The Caflisch Family", :to => email_addresses, :reply_to => email_addresses)
  end
end

capistranoのdeploy.rbにはこれが含まれています

# needed for the 'whenever' gem
set(:whenever_command) { "RAILS_ENV=#{rails_env} bundle exec whenever"}
require "whenever/capistrano"
4

4 に答える 4

3

これは、アクションメーラーの構成でperform_deliveries=falseが指定されている場合に発生する可能性があります。環境ファイルで構成を確認できます。

于 2013-01-13T09:07:12.367 に答える
3

スパムフォルダを確認してください。メールがそこに届かないようにするには、各メールに「登録解除」リンクを追加します。

于 2013-01-17T15:44:00.513 に答える
1

アプリケーションがクラウドサービスにデプロイされている場合は、スパムフォルダにメールが届いている可能性があります。それらのIPブロック全体が、のようなサービスでスパムとして登録されますSpamhaus。これは賢明な予防策です。そうしないと、通常よりもさらに多くのスパムが発生することになります。

そのフィールドにサーバーのIPアドレスを入力して、スパマーとしてリストされているかどうかを確認する必要があります。

もしそうなら、あなたはブロックを持ち上げることをスパムハウスに要求することができます。

于 2013-01-17T15:48:11.647 に答える
0

私が見つけた他の大きな問題は、設定方法によっては、PATHとrbenvがCRONTABで初期化されない場合があることです。ファイルの先頭に以下を追加することをお勧めし.bashrcます

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

これにより、を使用している場合に、完全に使用可能なwheneverモデルメソッドを呼び出すことができます。rbenvruby

于 2019-09-29T19:50:53.933 に答える