2012-03-26 38 views
3

我創建了一個rake任務,向我的訂戶(註冊用戶)發送電子郵件。從Rails 3應用程序發送批量「每週摘要」電子郵件

digest.rake:

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

通知::消化

def digest(periodicity = "weekly") 

    @from = "[email protected]" 

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

    @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

我不明白你的問題。你能告訴我們一些代碼,並告訴我們一些什麼不起作用的見解嗎? – 2012-03-26 23:25:56

+0

您需要告訴我們發生了什麼問題,或者您遇到了哪些問題。它是電子郵件的實際發送,是否安排每週運行的工作等。 – 2012-03-27 00:50:35

+0

抱歉我的問題描述不佳。我一定很累。感謝您指出了這一點。我編輯並添加了更多信息。希望你能幫助。 – zabumba 2012-03-27 09:50:03

回答

2

你的代碼是正確的。問題是gmail的規則。您無法一次發送很多電子郵件。如果你曾經有一個朋友的帳戶被黑客攻擊,你會看到他們發送電子郵件給100個左右的收件人並重復。

解決方案: 擁有多個電子郵件和旋轉(這是一個壞主意,因爲它會觸發來自Gmail的其他垃圾郵件防禦)

使用的Constant Contact或其他一些大宗郵件 - 非常適合您的情況

使用SendGrid - 即使您並非真正發送垃圾郵件,他們也可能會放棄您,因爲您在他們眼中「發送垃圾郵件」。