我创建了一个 rake 任务来向我的订阅者(注册用户)发送电子邮件。
消化. 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 邮件服务器,
但看起来我将面临类似的问题。
我的问题:如何定期向我的订阅者列表发送电子邮件?
注意这封电子邮件是建立在我的数据库中的内容之上的...
希望能帮到你
乔尔
最佳答案
你的代码没问题。问题是 gmail 的规则。您不能一次发送那么多电子邮件。如果您曾经有 friend 的帐户被黑,您会看到他们将电子邮件发送给 100 左右的收件人并重复。
解决方案:
有多个电子邮件并轮换(这是一个坏主意,因为它会触发来自 gmail 的其他垃圾邮件防御)
使用 Constant Contact 或其他一些散装邮件 - 非常适合您的情况
使用 SendGrid - 即使您不是真正的垃圾邮件,他们也可能会因为您在他们眼中“垃圾邮件”而放弃您。
关于ruby-on-rails - 从 Rails 3 应用程序发送批量 "Weekly Digest"电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880926/