我创建了一个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邮件服务器,但看起来我将面临类似的问题。
我的问题是:如何定期向我的订阅者列表发送电子邮件?
注意这封电子邮件是建立在我的数据库上的…
希望你能帮上忙
乔尔
发布于 2012-07-03 04:30:31
您的代码很好。问题出在gmail的规则上。你不能一次发那么多电子邮件。如果你曾经有一个朋友的账户被黑客入侵,你会看到他们将电子邮件发送给大约100个收件人,并重复发送。
解决方案:拥有多个电子邮件并轮换(这不是一个好主意,因为它会触发来自gmail的其他垃圾邮件防御)
使用Constant Contact或其他批量邮件-非常适合您的情况
使用SendGrid -他们可能会丢掉你,因为你在他们眼里是“垃圾邮件”,即使你并不是真正的垃圾邮件。
https://stackoverflow.com/questions/9880926
复制相似问题