Ruby on rails Rails cron不发送电子邮件
我正在使用Everyone gem让rails cron作业发送电子邮件。一切似乎都很正常,我的cron.log或production.log文件中没有错误,但我从未收到过电子邮件。我已经检查了电子邮件地址是否正确 感谢您的帮助 production.log文件包含以下内容:Ruby on rails Rails cron不发送电子邮件,ruby-on-rails,ruby,ruby-on-rails-3,cron,Ruby On Rails,Ruby,Ruby On Rails 3,Cron,我正在使用Everyone gem让rails cron作业发送电子邮件。一切似乎都很正常,我的cron.log或production.log文件中没有错误,但我从未收到过电子邮件。我已经检查了电子邮件地址是否正确 感谢您的帮助 production.log文件包含以下内容: Connecting to database specified by database.yml Rendered email_mailer/send_birthday_reminders.html.erb (5.3m
Connecting to database specified by database.yml
Rendered email_mailer/send_birthday_reminders.html.erb (5.3ms)
Sent mail to tomcaflisch@gmail.com (409ms)
这是我的gem schedule.rb文件
set :output, "#{path}/log/cron.log"
every :hour do
runner "BirthdayRemindersController.send_birthday_email_reminders"
end
生日提醒控制器.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
如果操作邮件程序配置指定perform\u deliveries=false,则可能发生这种情况。您可以在环境文件中签出配置 检查您的垃圾邮件文件夹。为确保电子邮件不会在那里结束,请在每封电子邮件中添加“取消订阅”链接。如果您的应用程序部署到云服务,则您可能会在垃圾邮件文件夹中收到电子邮件。他们的整个IP块在
Spamhaus
等服务中注册为垃圾邮件,这是一个明智的预防措施,否则我们将收到比平常更多的垃圾邮件
您应该在该字段中输入服务器的IP地址,以查看您是否被列为垃圾邮件发送者
如果是,您可以向Spamhaus请求解除该块 我发现的另一个大问题是,路径和rbenv可能无法在CRONTAB中初始化,这取决于您的设置方式。 我建议将以下内容添加到
.bashrc
文件的顶部
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
这确保了如果您使用
where
调用模型方法,则rbenv
和ruby
完全可用。我的应用程序在不在cron中使用时发送电子邮件很好。我将尝试测试where gem是否在您的系统上正常工作。我的怀疑是,无论出于何种原因,实际上都没有运行任何东西,这可以解释为什么没有错误。除了所有我的puts语句都是在我的控制器方法和我的mailer方法中调用的,所以无论何时gem正常工作,生产中的smtp设置是什么?生产日志显示它正在发送(除非@EfratBlaier是对的,但既然你回答了,那么我想你已经检查过了)。你检查过sendmail的配置和日志了吗?sendmail日志会在哪里?哦,天哪,我刚刚检查了我的垃圾邮件文件夹。邮件被发送到那里。我是个白痴,正在使用媒体庙宇(dv).这是一个VPS,所以我不认为这就是你所说的云服务。
# needed for the 'whenever' gem
set(:whenever_command) { "RAILS_ENV=#{rails_env} bundle exec whenever"}
require "whenever/capistrano"
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"