2013-01-12 32 views
7

從我所瞭解的情況來看,在給定文檔中掃描電子郵件時,Regex並不是最好的選擇。我想知道是否有任何替代方案?或者我不知道的一些最佳實踐方式?Ruby - 從文本或html解析電子郵件

+0

文檔中的電子郵件是什麼樣子的? –

+0

爲什麼不使用正則表達式?人們一直在測試字符串反對長期定義電子郵件的正則表達式。 –

+0

定義「電子郵件」的含義。電子郵件,收件人:/發件人:/主題:標題?電子郵件地址?無論如何,更新您的問題並更具描述性。此外,還會顯示要掃描的文本的示例,包括要提取的目標數據。 –

回答

15

對於解析工作來說,依賴庫是個好主意。你說得對,圖書館總是有更多的細節處理的問題不是一個正則表達式,考慮不同的情況下,等

一個Ruby庫來解析電子郵件是Mail

郵件是互聯網用於Ruby的庫,用於處理電子郵件 世代,解析並以簡單的rubyesque方式發送。

[...]郵件已經設計了真正打開了你的解析,如果你 知道你在做什麼的電子郵件非常簡單的面向對象 系統,你可以用的每一點你撥弄直接發送電子郵件至 。

以下是電子郵件的內容是如何被訪問的例子:

mail = Mail.read('/path/to/message.eml') 

mail.envelope.from #=> '[email protected]' 
mail.from.addresses #=> ['[email protected]', '[email protected]'] 
mail.sender.address #=> '[email protected]' 
mail.to    #=> '[email protected]' 
mail.cc    #=> '[email protected]' 
mail.subject   #=> "This is the subject" 
mail.date.to_s  #=> '21 Nov 1997 09:55:06 -0600' 
mail.message_id  #=> '<[email protected]>' 
mail.body.decoded #=> 'This is the body of the email... 

這也使您能夠解析多的電子郵件,以及測試和提取附件。

+0

我只在上面看到過這種類型的例子,而不是像'@my_subject_variable = mail.envelope.from'這樣的東西只是一個很好的複製和粘貼工作,還是有一個原因,爲什麼每個人都使用相同的例子? –

+1

@HerbMeehan該示例取自存儲庫的自述文件。當然,你可以按照你提出的方式使用它。 –