【问题标题】:Whenever gem is not sending an email每当 gem 不发送电子邮件时
【发布时间】:2017-08-03 10:05:00
【问题描述】:

如果用户在 48 小时内未激活,我想向他们重新发送激活电子邮件。我用过 gem 但它没有发送电子邮件。即使操作邮件程序工作正常并在用户注册时发送电子邮件 schedule.rb

 set :environment, :development
      every 1.minutes do
        runner "user.resend_account_activation"
    end

user_mailer.rb

def resend_account_activation
    @user = User.where('activated = ?',false && 'activated_at < ?',48.hours.ago)

    mail to: @user.email, subject: "You forgot to activate"
  end

user.rb

 def resend_account_activation
      # @outdated_users = User.where('activated_at < ?',30.seconds.ago)
      UserMailer.resend_account_activation.deliver_now!

  end

在我的 cmd 中

# Begin Whenever generated tasks for: store
* * * * * /bin/bash -l -c 'cd /mnt/c/Sites/testApp && bin/rails runner -e production '\''user.resend_account_activation'\'''

# End Whenever generated tasks for: store

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 rubygems whenever


    【解决方案1】:

    我觉得不应该是user.resend_account_activation

    会是这样的

    user.rb

    def self.resend_account_activation_to_users
      User.where('activated = ? AND activated_at < ?', false ,48.hours.ago).each do |user|
        UserMailer.resend_account_activation(user.id).deliver_now!
      end
    end
    

    注意:我已更改 48 小时查询。执行前请检查

    user_mailer.rb

    def resend_account_activation(user_id)
      @user = User.find(user_id)
      mail to: @user.email, subject: "You forgot to activate"
    end
    

    runner "User.resend_account_activation" # Note: changed user =&gt; User

    【讨论】:

    • 我不确定这个查询。 User.where('activated = ?',false &amp;&amp; 'activated_at &lt; ?',48.hours.ago)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多