我正在使用随时随地拥有rails cron作业发送电子邮件。一切似乎工作得很好,我的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)
这是我的每当gem 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\" <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"
答案 0 :(得分:3)
如果您的操作邮件程序配置指定perform_deliveries = false,则可能会发生这种情况。您可以在环境文件中查看配置。
答案 1 :(得分:3)
检查您的垃圾邮件文件夹。要确保电子邮件不会在那里结束,请在每封电子邮件中添加“取消订阅”链接。
答案 2 :(得分:1)
如果您的应用程序部署到云服务,那么您可能会将您的电子邮件发送到垃圾邮件文件夹中。他们的整个IP块在Spamhaus
等服务中被注册为垃圾邮件,这是一种明智的预防措施,否则我们将获得比平时更多的垃圾邮件。
您应该在该字段中输入服务器的IP地址,以查看您是否被列为垃圾邮件发送者。
如果你是,你可以要求Spamhaus解除阻止。
答案 3 :(得分:0)
我发现的另一个大问题是,根据您的设置方式,PATH和rbenv可能未在CRONTAB中初始化。
我建议将以下内容添加到您的.bashrc
文件的顶部
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
这可以确保如果您使用whenever
来调用rbenv
和ruby
完全可用的模型方法。