我的應用程序有一個UserMailer,其中包含多個郵件發送方法,其中大部分郵件都通過延遲作業發送出去。Rails,每次發送電子郵件時如何保持數據庫表日誌
我想有一個數據庫表中創建一個記錄每一個郵件被髮送出去的時間。該應用程序使用sendgrid進行發送,但我不相信sendgrid 100%,並希望在應用程序中保留一條記錄以進行調試。
有一個高層次的方式在全球範圍內捕捉當郵件被髮送出去,並在數據庫記錄,而不是被強迫的邏輯到過郵件的方法?
感謝
我的應用程序有一個UserMailer,其中包含多個郵件發送方法,其中大部分郵件都通過延遲作業發送出去。Rails,每次發送電子郵件時如何保持數據庫表日誌
我想有一個數據庫表中創建一個記錄每一個郵件被髮送出去的時間。該應用程序使用sendgrid進行發送,但我不相信sendgrid 100%,並希望在應用程序中保留一條記錄以進行調試。
有一個高層次的方式在全球範圍內捕捉當郵件被髮送出去,並在數據庫記錄,而不是被強迫的邏輯到過郵件的方法?
感謝
我通過電子郵件模型解決這個問題,用「到」和「GUID」字符串字段。
def self.deliver(which, to, guid, *args)
transaction do
if self.where(:email => to, :guid => guid).first.nil?
if record = Email.create(:email => to, :guid => guid, :template => which) and !record.new_record?
Mailer.send("deliver_#{which}", to, *args)
end
end
end
end
這是Rails 2.3郵件程序,所以Rails 3的調用會有點不同,但核心概念是成立的。而不是直接調用的郵件,你會調用:
Email.deliver(email_name, receipient, some_guid_you_generate_for_this_email, *args_to_be_sent_to_mailer)
這將檢查數據庫,以確保你沒有重複發送相同的電子郵件到指定的地址,並且將保留所有的記錄發送了您可以在將來查看的電子郵件。
謝謝,但我希望的更多的是觀察者的概念,以不被強制破解標準郵件傳遞方法。 – AnApprentice