从Rails 3应用程序发送批量“Weekly Digest”电子邮件

时间:2012-03-26 22:38:51

标签: ruby-on-rails smtp gmail

我创建了一个rake任务来向我的订阅者(注册用户)发送电子邮件。

digest.rake:

desc "Send digest"
task :send_digest => :environment do
   Notifier.digest.deliver #if Time.now.monday?
end

通告::消化

 def digest(periodicity = "weekly")

   @from = "biowatts@gmail.com"

   @bcc = ""
     User.where("digest_periodicity LIKE ?", periodicity).each do |u|
       @bcc += u.email_address + ","
     end
   @bcc = Rails.env.production? ? @bcc[0..-1] : "biowatts@gmail.com"

   @message_subject = Rails.env.production? ? "#{periodicity.capitalize} Digest" : "#{periodicity.capitalize} Digest (Test)"

   @public_projects = PowerPlant.where("public = ?", true).order("created_at desc")  

   mail(:bcc => @bcc, :subject => @message_subject)

这一切都很好,直到我尝试部署。 在我的生产环境中,我的收件人列表超过300个电子邮件地址。 因此,当我运行正确的rake命令时,我收到此消息而不是发送电子邮件。

$ heroku rake send_digest --app biowatts
> rake aborted!
> 452-4.5.3 Your message has too many recipients. For more information regarding

我正在使用smtp.gmail.com 但我也尝试使用我的godaddy smtp邮件服务器, 但看起来我将面临类似的问题。

我的问题:如何定期向订阅者列表发送电子邮件?

注意此电子邮件是基于我的数据库中的内容...

希望你能提供帮助,

乔尔

1 个答案:

答案 0 :(得分:2)

你的代码很好。问题是gmail的规则。您不能一次发送那么多电子邮件。如果您曾经有朋友的帐户被黑了,您会看到他们将电子邮件发送给100个左右的收件人并重复。

解决方案: 有多个电子邮件和旋转(这是一个坏主意,因为它将触发gmail的其他垃圾邮件防御)

使用Constant Contact或其他散装邮件 - 非常适合您的情况

使用SendGrid - 即使您不是真正的垃圾邮件,他们也可能会因为您在他们眼中“发送垃圾邮件”而放弃您。