邮寄多个用户

时间:2010-02-01 16:42:41

标签: ruby-on-rails

我已经找到了如何通过单一方式向用户发送电子邮件(有人输入他们的电子邮件地址,邮件模型使用friend.email向该人发送电子邮件(朋友是模型,电子邮件是属性)。

现在我正在尝试向多个用户发送电子邮件。我开始在我的用户模型中编写一个过程,如下所示:

  class User < ActiveRecord::Base

  acts_as_authentic

  def mail_out

    weekday = Date.today.strftime(%A).downcase

    @users = find(:conditions => "#{weekday}sub = t")

    @users.each { |u| UserMailer.deliver_mail_out(u)}   


  end

end

我知道有更好的方法可以做到这一点但是我的数据库中的每个用户都可以使用t或f进行mondaysub,tuesdaysub等等。所以我想把所有用户的mondaysub属性设置为“t “进入@monday变量(对于每周的每一天都是相同的)。现在我想查看星期几,如果是星期一,请发送电子邮件给@monday变量中的每个用户。我曾经用过如下:

 every 1.day, :at => '5:30 am' do
    runner "User.mail_out"
  end

这将每天在我的模型中调用一次mail_out进程(我认为)。

现在我的邮件设置如下:

class UserMailer < ActionMailer::Base
    def mail_out(users)
    @recipients = { }
    users.each do |user|
      @recipients[user.email] = { :name => user.name }
    end


    from        "no-reply@dailytrailer.net"
    subject     "Check out the trailer of the day!"
    body        :user => user
  end

end

我的问题是,我如何将它们连接在一起,我希望我在正确的轨道上...我希望每天早上5点这样,如果它是星期一,那么每个用mondaysub的用户设置为“t “邮寄了特定的用户邮件模板。我开始真的很困惑自己,任何帮助都会非常感激。正如你所知,我是新手,但我一直在阅读大量书籍/教程。

谢谢!

2 个答案:

答案 0 :(得分:1)

对于这种群发电子邮件,你真的应该考虑将问题外包出去。看看PostageApp,这对email multiple recipients来说是微不足道的。这是DHH批准的!

答案 1 :(得分:0)

检查发送电子邮件的this railscast episode。您只需要在 views / usermailer / mail_out.erb.html 上为您的电子邮件创建模板文件。