我有一個發送電子郵件的軌道代碼。以下是在我的控制器:沒有錯誤的軌道增量
def create
@users = Users.find(:all)
@sub = params[:sub]
@body = params[:body]
@index = 0
@users.each {|i| index++; Notifier.deliver_notification(@users.email_address, @sub, @body, @users.unsubscribe_link);}
flash[:notice] = "Mail was sent to " + @index + " people"
end
我已經在我的模型
class Notifier < ActionMailer::Base
def notification(email, sub, content, link)
recipients email
from "[email protected]"
subject sub
body :content => recipient, :link => link
end
end
這一切工作正常以下。我的問題是:
例如,如果在向其中一個人發送郵件時發生錯誤,即使那時我的Flash消息也會說。 Mail was sent to X people
如何才能確保@index
只有在郵件成功發送時纔會增加?
謝謝。我明白那個。只有我試圖捕獲的錯誤是如果電子郵件地址不存在或者電子郵件地址錯誤。在這些情況下,我注意到錯誤是馬上扔掉的。 (至少在本地主機上) – 2010-08-06 19:27:32
沒有可靠的方法來測試電子郵件地址是否存在。許多服務器實施悄悄地接受和丟棄無效的電子郵件,以防止垃圾郵件發送者進行字典探測有效的電子郵件地址。另外,由於您可能會將您的電子郵件發送給某種中介,因此您希望的最好方法是驗證接收方的主機名或域是否有有效的MX。如果您想驗證電子郵件地址,請根據[RFC822正則表達式](http://tfletcher.com/lib/rfc822.rb)進行檢查。請參閱我的修改後的答案,瞭解如何更改計數。 – tadman 2010-08-08 18:46:42