2011-08-12 40 views
0

我已經通過cpanel建立了一個叫做'[email protected]'的轉發器,它通過管道連接到一個跑步者(即查看通過rails接收電子郵件的任何教程)。這部分工作正常 - 我可以告訴腳本正在運行,因爲我已經將它設置爲使用記錄器。我遇到的問題是能夠在反彈電子郵件中找到我的自定義標題「X-Subscriber-Id:」。有沒有辦法訪問原始的電子郵件數據,所以我可以做一個正則表達式搜索,或者我必須以更復雜的方式做到這一點?Rails Actionmailer - 在反彈回復中找到原始頭文件

另一方面,如果我收到反彈信息或者是否需要採取某些附加步驟以避免惡意的意圖,自動從數據庫中刪除電子郵件是明智的做法嗎?

編輯:發佈代碼...

def receive(email) 
    # email.body doesn't work...how do I search for this? I know it's in the email... 
    account = /X\-Subscriber\-Id: (.*)/.match(email.body)[1].split("|") rescue nil 
    # If we've found the account info 
    logger.info "Nil?: #{account.nil?}" 
    if !account.nil? 
     id, private_id = account[0].to_i, account[1] 
     if @subscriber = Subscriber.find_by_id(id) 
      @subscriber.update_attribute(:bouncebacks, @subscriber.bouncebacks.to_i + 1) 
      logger.info "Faulty Account: #{@subscriber.email}" 
     end 
    else 
      # This is where we email the admin in case of failure to find an account (manual removal from database) 
      # This section is incomplete at this time 
     @from = "My Site <[email protected]>" 
     @recipients = "[email protected]" 
     @subject = "Bounceback could not be processed" 
     #@body = email.body -- What do I put here to simply re-send the email? 
    end 
end 
+0

在交付失敗時,根本不需要刪除它,您可以讓某個運行維護的郵件服務器或任何可能觸發系統的數字或條件。 –

+0

我實際上已經設置了它,使它爲正在運行的「反彈計數」增加1。當它達到3時,它會從數據庫中刪除電子郵件。每兩個月,每次反彈減少1。 – JakeTheSnake

+0

我想這是一個好的解決方案,但它是值得的麻煩,但?另外,如果您發佈您現在使用的代碼來接收電子郵件 –

回答