2013-01-11 2 views
4

Я использую всякий раз, когда у меня есть рельсы cron, отправляющие электронные письма. Кажется, все работает нормально, и у меня нет ошибок в моем cron.log или моем файле production.log, но я никогда не получаю письмо. Я также проверял правильность адреса электронной почты.Rails cron не отправляет электронные письма

Любая помощь приветствуется.

production.log файл содержит следующее:

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

Sent mail to [email protected] (409ms) 

Вот мой, когда драгоценный камень schedule.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\" <[email protected]>" 

    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 

deploy.rb Capistrano содержит этот

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

Каковы ваши настройки smtp в процессе производства? –

+0

Я использую sendmail – Catfish

+0

Ваш производственный журнал показывает, что он отправляет (если только @EfratBlaier не прав, но, поскольку вы ответили, я предполагаю, что вы это проверили). Вы проверили конфигурацию и журналы в sendmail? –

ответ

3

Проверьте папку со спамом. Чтобы убедиться, что письма не заканчиваются, добавьте ссылку «Отменить подписку» в каждом письме.

3

Это может произойти, если конфигурация почтовой программы действий определяет perform_deliveries = ложь. Вы можете проверить конфигурацию в файлах среды.

+0

Мое приложение отправляет письмо просто отлично, когда не используется в cron. – Catfish

+0

Я бы попытался проверить, что всякий раз, когда драгоценный камень работает правильно в вашей системе. Мое подозрение в том, что по какой-то причине ничего не запускают, что объясняет отсутствие ошибок. – Qsario

+0

За исключением всех моих высказываний puts вызывается в моем методе контроллера и моем методе почерка, поэтому всякий раз, когда драгоценный камень работает нормально – Catfish

1

Если ваше приложение развернуто для облачных сервисов, вы можете получать свои письма в папке со спамом. Их все блоки IP регистрируются как спам при таких услугах, как Spamhaus, что является разумной предосторожностью, иначе мы получим еще больше спама, чем обычно.

Вы должны ввести IP-адрес своего сервера в этом поле, чтобы узнать, указаны ли вы в качестве спамера.

Если вы являетесь, вы можете попросить Спамхаус, чтобы блок был снят.

+0

Я использую медиа-храм (dv). Это VPS, поэтому я не думаю, что это то, что вы подразумеваете под облачным сервисом. – Catfish

Смежные вопросы