我曾经使用过gems,我已安排超过500封邮件在特定时间执行,但它不会继续。但如果我发送15或20封电子邮件,那么它就会。我在输出文件中得到以下内容什么时候。
rake aborted!
Net::SMTPServerBusy: 452 4.5.3 Error: too many recipients
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/mail-2.6.4/lib/mail/network/delivery_methods/smtp.rb:114:in `block in deliver!'
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/mail-2.6.4/lib/mail/network/delivery_methods/smtp.rb:113:in `deliver!'
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/mail-2.6.4/lib/mail/message.rb:253:in `deliver!'
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/actionmailer-4.2.4/lib/action_mailer/message_delivery.rb:77:in `deliver_now!'
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/actionmailer-4.2.4/lib/action_mailer/message_delivery.rb:95:in `deliver!'
/home/indiba3/hrms/lib/tasks/email_tasks.rake:25:in `block (2 levels) in <top (required)>'
/home/indiba3/.rvm/gems/ruby-2.1.8/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/home/indiba3/.rvm/gems/ruby-2.1.8/bin/ruby_executable_hooks:15:in `eval'
/home/indiba3/.rvm/gems/ruby-2.1.8/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => task_namespace:birthday_invitation_mail
(See full trace by running task with --trace)
那么我怎么可能解决这个错误并让电子邮件发送给500人,如果有任何电子邮件错误,我可能会在另一个日志文件中得到输出........所以请帮助.... ....... ??
答案 0 :(得分:0)
批量获取用户,然后尝试发送邮件。
def birthday_email
date = Date.today
Employee.where("status = ? AND strftime('%d/%m', date_of_birth) = ?", "Active" , date.strftime('%d/%m')).where("age > 21").find_in_batches do |group|
sleep(5)
group.each { |emp| mail(to: emp.email, subject: 'Birthday Wishes') }
end
end
EmployeeMailer.birthday_email.deliver!