2010-02-07 5 views
1

Я пытаюсь отправить электронное письмо нескольким пользователям. У меня есть модель, которая отправляет @users, у которой есть все пользователи, которых я собираюсь рассылать ... теперь, когда в User_mailer у меня возникают проблемы с выяснением того, как сообщить процессу mail_out для отправки каждому из пользователей (установить каждый получатель - пользователь.). Подводя итог, я хочу установить задание cron для запуска процесса User.mail_out каждое утро, отправить его каждому пользователю в переменной @users, передаваемой в модель User_mailer. Может кто-нибудь предложить способ сделать это? В настоящее время я получаю следующее сообщение об ошибке при использовании того, что я написал ниже:Синтаксис отправки нескольких пользователей

/usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: /usr/lib/ruby/1.8/net/smtp.rb:680:in `check_response': 501 5.1.3 Bad recipient address syntax (Net::SMTPSyntaxError) 

User.rb

class User < ActiveRecord::Base 

    acts_as_authentic 
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create 
validates_presence_of :birthday => "cannot be left blank" 

    def self.mail_out 

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

    @users = find(:all, :conditions => {"#{weekday}sub".to_sym => 't'}) 




    UserMailer.deliver_mail_out(@users) 



    end 


end 

User_Mailer.rb

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


    from  "somewhere.net" 
    subject  "Check it out" 
    body  :user => @recipients 
    end 


    def subscribe(user) 
    recipients user.email 
    from  "somewhere.net" 
    subject  "Welcome!" 
    body  :user => user 
    end 

end 

ответ

1

Параметр 'тело' в вашем # Метод mail_out предназначен как хэш значений, которые будут интерполированы в шаблон электронной почты, а не хеш получателей. он должен выглядеть следующим образом:

def mail_out(users) 
recipients users.collect(&:email) 
from  "somewhere.net" 
subject  "Check it out" 
body  {:var => 'value to interpolate into email'} 
end 

Theres хорошая шпаргалка здесь: http://dizzy.co.uk:80/ruby_on_rails/cheatsheets/action-mailer

+0

Спасибо, я все ближе ... хотя я получаю эту ошибку: Теперь SyntaxError (/ дом/tnederlof /Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:7: синтаксическая ошибка, неожиданный tASSOC, ожидающий '}' –

+0

Nevermind Я получил это, спасибо! –

Смежные вопросы