有沒有人對我如何清理傳入郵件的主體有任何建議?我想刪除免責聲明,圖片以及可能也會出現的任何以前的電子郵件文本,這樣我只剩下正文文本內容。我的猜測是不可能以任何可靠的方式實現,但是有沒有人嘗試過?有沒有適合這種事情的圖書館?是否有可能以編程方式「清理」電子郵件?
回答
在電子郵件中,有一些商定的標記意味着你想要剝離的東西。您可以使用regular expressions查找這些行。我懷疑你不能真的很好「消毒」您的電子郵件,但你可以找一些事情:
- 線開始「>」(大於然後空格更大),標誌着報價
- 本着「 - - 「(然後兩個連字符的空格,然後換行)標誌着一個簽名的開始,看到Signature block on Wikipedia
- 多部分消息,邊界與開始 -,除此之外,你需要做一些搜索從不需要的部分郵件正文部分分開(如base64圖像)
至於實際的C#實現,我會爲您或其他SOers留下。
如果您創建自己的應用程序,我會查看正則表達式,找到文本並將其替換。爲了使應用程序有點不錯,我會創建一個叫做電子郵件的類,並且在該類中我有一個名爲RAW的屬性和一個名爲Stripped的屬性。
只是一些提示,你會收集其餘的時候,你看着正則表達式!
一些明顯的事情來看待:
- 如果郵件是什麼,但純粹的純文本,該消息將是多部分MIME。任何類型爲「image/*」的部分(image/jpeg等)都可能被刪除。在所有可能的情況下,任何類型不是「text/*」的部分都可以使用。
- 一個HTML消息可能會有一個類型爲「multipart/alternative」(我認爲)的部分,並且將包含2個部分,一個爲「text/plain」和一個爲「text/html」。這兩部分應該大致相同,因此您可以刪除HTML部分。如果唯一存在的部分是HTML位,則可能必須執行HTML以純文本轉換。
- 引用文本的通常格式是在文本前面加上「>」字符。您應該能夠刪除這些行,除非行開始「>從」,在這種情況下已插入「>」以防止郵件閱讀器認爲「發件人」是新郵件的開始。
- 簽名應該以「 - \ r \ n」開頭,儘管後面的空間很可能會丟失。
OSBF-Lua的第3版有一個郵件解析庫,它將處理MIME並將郵件拆分爲其MIME部分等等。我目前有一堆Lua腳本,它們會像 那樣忽略大多數非文本附件,比較喜歡純文本到HTML,等等。 (爲了保留引號,我也將長行換成80個字符。)
就刪除先前引用的郵件而言,上述建議都很好(您必須訂閱一些不合適的郵件列表)。
可靠地刪除免責聲明可能會很難。我的第一步是簡單地維護一個免責聲明庫,這個免責聲明將從每封郵件的末尾刪除;我會編寫一個腳本,使我能夠輕鬆地添加到庫中。對於更復雜的東西,我會嘗試一些機器學習。
自2007年2月以來,我一直致力於垃圾郵件過濾,並且我發現任何與電子郵件有關的事情都是一團糟。一個好的經驗法則是,無論你想要做什麼都比你想象的要困難得多:-(
鑑於你的問題「是否有可能以編程方式'清潔'電子郵件?」,我會回答「否,不可靠」
你所面臨的危險是不是一個真正的技術,而是一個社會學的一個
這是很容易被發現,並過濾掉,郵件的某些方面 - 。像圖像過濾out簽名和免責聲明同樣可以實現(儘管更多的是挑戰)
真正的問題是開發人員的成本它錯了。
如果您的過濾器碰巧刪除了一條關鍵信息,會發生什麼情況?你可以追溯到找到缺失的部分,或者是你的過濾desytructive?更糟糕的是,你會注意到這件作品丟失了嗎?
我在幾年前看到過一個經典的喜劇素描來說明這一點。兩個人一起在一輛車上工作。一位在做這項工作,另一位坐在附近閱讀服務手冊的指示 - 很明顯,沒有人知道他在做什麼,但他們正在盡力而爲。
手冊傢伙,朗讀:「撤消大膽的油底殼的中心......」 [轉頁]
工具的傢伙:「好吧,這出去了。」
手動人:「......在任何情況下」。
- 1. 是否可以在Magento中以編程方式發送電子郵件?
- 2. 是否可以通過編程方式阻止電子郵件/短信?
- 3. 是否有可能以編程方式發送沒有iPhone簽名的電子郵件?
- 4. 是否有可能以編程方式升級Android固件?
- 5. 是否有可能以編程方式觸發onbeforeunload事件?
- 6. 是否有可能以編程方式運行.scf文件
- 7. 是否有可能以編程方式發送電子郵件,而無需使用任何實際的電子郵件帳戶
- 8. 是否有可能通過API以編程方式獲得eBay分類清單?
- 9. 以編程方式通過電子郵件發送iPhone附件
- 10. 以編程方式導入Outlook中的電子郵件文件
- 11. 是否有可能發送電子郵件只有jQuery?
- 12. 是否可以在PHP中編寫電子郵件解析器?
- 13. 是否可以在Silverlight電子郵件上創建電子郵件附件?
- 14. 是否可以在Oracle中以事務方式發送電子郵件?
- 15. 是否有可能以編程方式在背景上撥打電話?
- 16. 是否可以在iOS中以編程方式接聽電話?
- 17. 是否可以自定義DOCUSIGN的電子郵件樣式表
- 18. 以編程方式檢查Outlook電子郵件
- 19. Android以編程方式打開電子郵件客戶端
- 20. 如何以編程方式捕獲電子郵件? (像posterous)
- 21. 以編程方式在Android中發送電子郵件
- 22. 以編程方式從Exchange Sever 2003讀取電子郵件
- 23. 以編程方式在Magento中發送電子郵件失敗
- 24. 以編程方式發送海量電子郵件
- 25. 以編程方式從Outlook下載多個電子郵件
- 26. Iphone使用MFMailComposer以編程方式發送電子郵件?
- 27. 以編程方式刪除ios中的電子郵件簽名
- 28. 以編程方式檢測自動回覆電子郵件
- 29. 從Outlook以編程方式導出電子郵件使用vba
- 30. 以編程方式高效地移動電子郵件
這個想法出現在我身上,沒有我的過程沒有破壞性,電子郵件以原始格式保存,但我需要以其他方式使用所提供信息的元素,但是您所提出的觀點恰恰是正在嘮叨我。 – flesh 2008-12-15 10:37:06