Ruby on rails Rails每天向用户发送邮件

Ruby on rails Rails每天向用户发送邮件,ruby-on-rails,ruby,cron,actionmailer,Ruby On Rails,Ruby,Cron,Actionmailer,我正在尝试使用gem(或者有更好的解决方案?) 我一直在努力,但我不确定我是否做对了 这是我的日程表。rb: every :day, :at => '12pm' do # Use any day of the week or :weekend, :weekday runner "UserMailer.daily_mail" end 我的用户邮箱: def daily_mail(user) @user = user mail to: user.email, subjec

我正在尝试使用gem(或者有更好的解决方案?) 我一直在努力,但我不确定我是否做对了

这是我的日程表。rb:

every :day, :at => '12pm' do # Use any day of the week or :weekend, :weekday
  runner "UserMailer.daily_mail"
end
我的用户邮箱:

def daily_mail(user)
    @user = user
    mail to: user.email, subject: "Mail journalier"
end
在my user.rb中:

  def send_daily_mail
    UserMailer.daily_mail(self).deliver
  end
问题是,我的项目中已经有了邮件激活,它正在工作(我可以在heroku中测试它)。应用程序在创建帐户时发送邮件,因此在UserController中,有:

    def create
      @user = User.new(user_params)
      if @user.save
        @user.send_activation_email
        flash[:info] = "Veuillez contrôler votre boîte mail pour activer votre compte."
        redirect_to root_url
      else
        render 'new'
      end
    end
但在这里,它会在一个动作后发送一封电子邮件。但是,如果我想让邮件在任何时候发送,那么还有什么事情可以让它工作呢?既然我不在生产环境中,我该如何测试它呢(我认为,无论何时都不能与heroku一起工作)

最终的结果是在用户首选项中有一个复选框,他将能够检查每日、每周或每月的更新,并相应地发送邮件


谢谢

您应该创建一个
rake
任务,类似于:

desc "Send email to users"

task :email_sender => :environment do |_, args|
  User.find_each do |user|
    UserMailer.daily_mail(user).deliver if <YOUR_LOGIC_TO_CHECK_IF_YOU_NEED_TO_SEND_EMAIL>
  end
end

您的脚本“runner”UserMailer.daily_-mail“`没有将用户传递给
daily_-mail
操作。你们能解释一下你们对谁收到邮件以及什么时候收到邮件的要求吗?我的目标是在用户表中添加一个字段,如果他想不想收到每日邮件,这是一个简单的布尔值。我希望任务向激活此任务的每个用户发送一封邮件。那么我不需要使用user.rb?对于复选框,我考虑在用户表中添加字段,并检查User.daily是否为true或其他内容。这样行吗?是的,您需要在表中添加一个新列来存储所需电子邮件的频率。它将在计算是否需要向用户发送电子邮件时使用,特别是rake执行。我会这样做,然后让您知道。既然gem在heroku中不起作用,我怎么能测试这个函数是否起作用呢?我已经添加了复选框,它们可以完美地工作。现在我想测试rake任务是否与schedule.rb一起工作,但我不知道@Komarzer有多酷。让我们为这个问题发布新的问题,这样它就可以有个人的答案,这也会帮助其他人
every :day, :at => '12pm' do
  rake "email_sender"
end