2010-02-17 77 views
3

如何將我去接收郵件在Ruby on Rails應用程序無需通過郵件服務器Postfix類似或POP3等接收郵件的Ruby/Rails

來接他們什麼,我做的是捕獲發送到@ mydomain.com的所有郵件,並在我的應用程序中與他們做一些事情。我不需要存儲郵件或類似的東西。

這是可行嗎?

回答

0

如果您編寫自己的郵件服務器,或者您的郵件服務器支持鉤子以在收到郵件時運行外部程序(例如procmail),則可以執行此操作。

如果您沒有可用的procmail(或者如果在Exchange Server上,不想使用自定義規則或擴展名),您最好使用pop3庫來獲取郵件。

很顯然,編寫郵件服務器比任何其他方法都困難。

如果您最擔心的是檢查潛在的數百個電子郵件帳戶,這可以通過正確配置您的電子郵件服務器來解決。如果您位於託管服務提供商處,請詢問您的服務器管理員有關創建將所有郵件路由到未知地址的「全部通過」帳戶到單個帳戶。

0

如果您的目標是避免輪詢服務器,請考慮IMAP IDLE命令。我已經成功編寫了一個Ruby客戶端,用於打開與IMAP服務器的連接,並在新郵件到達時被服務器告知。

2

我剛剛爲我的SAAS實現了自動處理郵件反彈通知消息。

給我打電話,給你打電話?

您打電話給我 您可以設置本地郵件服務器。然後,它會響應收到的電子郵件,並啓動一個rails可執行文件來處理電子郵件。不建議使用這種方法,因爲啓動rails是一項艱鉅的任務(需要多秒和大量內存)。你不想讓一個Rails壞男孩因爲你收到一封電子郵件而啓動。你會寫你自己的DDOS攻擊。 (攻擊自己。)

我給你打電話 相反,調查通過使用一個單一的工作來處理所有當前正在等待郵件按照自己的時間表電子郵件。您需要設置後臺作業處理程序,因爲股票軌道專注於響應Web請求。我使用delayed_job,但還有其他的選擇,包括經常開啓cron作業。

另一個好處是你不需要管理郵件服務器。把這個頭痛留給其他人。然後使用Ruby庫net :: imap來讀取傳入的郵件並對其進行處理。

如果您的程序無法識別電子郵件格式,則將該信息轉發給人員進行處理。

而且可以肯定的是,如果過程發送除了讀/處理它郵件,該工藝採用不同電子郵件地址作爲發件人地址。否則,在這個過程的某個時候,機率會很高,最終會出現在電子郵件循環中,並且會有很多千兆字節的消息來回傳遞。例如,您的流程會收到一條消息,並對此做出響應,但與此同時,發件人(一個人)已打開休假回覆。而且你的機器人然後響應休假響應.....哎呀....

編寫自己的郵件服務器

回覆:

我怎麼會去接收郵件在Ruby on Rails應用程序中,不需要像PostFix那樣通過郵件服務器,或者通過pop3等來獲取它們。

我要做的就是捕獲發送到@ mydomain.com的所有郵件,並在我的操作系統應用。我不需要存儲郵件或類似的東西。

直接回答:是的,你可以通過編寫一個smtp服務器並設置dns來讓你的機器成爲域的郵件目的地。您的smtp服務器會即時處理這些消息,它們不會隨時存儲在您的系統中。

這是個好主意嗎?一點都不。雖然外觀可能相反,但電子郵件是一個存儲和轉發系統。嘗試避免在應用程序處理消息之前存儲消息並不明智。這將是一個非常糟糕的「優化」。但是,使用訪問協議(POP3或IMAP)是避免安裝,配置和管理郵件服務器成本的好方法。