我创建了一个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邮件服务器, 但看起来我将面临类似的问题。
我的问题:如何定期向订阅者列表发送电子邮件?
注意此电子邮件是基于我的数据库中的内容...
希望你能提供帮助,
乔尔
答案 0 :(得分:2)
你的代码很好。问题是gmail的规则。您不能一次发送那么多电子邮件。如果您曾经有朋友的帐户被黑了,您会看到他们将电子邮件发送给100个左右的收件人并重复。
解决方案: 有多个电子邮件和旋转(这是一个坏主意,因为它将触发gmail的其他垃圾邮件防御)
使用Constant Contact或其他散装邮件 - 非常适合您的情况
使用SendGrid - 即使您不是真正的垃圾邮件,他们也可能会因为您在他们眼中“发送垃圾邮件”而放弃您。