为什么迭代用户在邮件程序方法中不起作用?

时间:2014-04-03 18:48:03

标签: ruby-on-rails email actionmailer delayed-job

我有一个控制器操作可以创建提醒,我正在通过@event@users来检查用户并检查他们是否已选中提醒复选框,默认情况下我已设置它是真的。

这是为了检查我想要收到电子邮件的用户,并在邮件中向他们发送电子邮件,但是这样做不起作用。它会在不发送电子邮件的情况下清除队列。

def create
        ReminderMailer.delay(queue: "#{@event.name}_letter", run_at: 1.minutes.from_now).events_reminder(@event,@users)

end

在我的邮件中,我有这个:

def events_reminder(event,users)
    @event =  event
    @users = users
    users.each do |user|
          if user.eventReminder == true
            mail to: user.email, subject: "Reminder"
          end
    end 
end

它会创建队列,但不会发送电子邮件。

我是否面临此用户遇到的问题?

Rails 3 + action mailer - Cannot loop to send emails

1 个答案:

答案 0 :(得分:0)

7天后:/!在文档中找到了解决方案...当他们说RTFM时就是如此:)!

以下是解决方案:

  

2.3.3向多个收件人发送电子邮件

     

可以通过一封电子邮件向一个或多个收件人发送电子邮件   (例如,通过设置列表来通知所有管理员新的注册)   发送电子邮件至:to key。电子邮件列表可以是一系列电子邮件   地址或单个字符串,地址用逗号分隔。

class AdminMailer < ActionMailer::Base
  default to: Proc.new { Admin.pluck(:email) },
          from: 'notification@example.com'

  def new_registration(user)
    @user = user
    mail(subject: "New User Signup: #{@user.email}")
  end
end

http://edgeguides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks