2011-04-13 32 views
13

我冒險在這裏未知的領域......構建電子郵件客戶端有多難? - Python的

我試圖找出它可能是多麼困難用來實現電子郵件客戶端的Python:

  • 電子郵件檢索
  • 電子郵件發送
  • 電子郵件格式
  • 電子郵件渲染

而且我想知道所有協議是否容易/難以支持,例如, SMTP,IMAP,POP3,...


希望有人可以點我在正確的方向:)

+2

我刪除了C++代碼,它似乎並沒有C++都 – 2011-04-13 10:13:57

+1

的Python相關:電池:SMTP,IMAP,POP3 - [Internet協議(HTTP://文檔。 python.org/library/internet.html),[Internet數據處理](http://docs.python.org/library/netdata.html) – 2011-04-13 10:19:19

+1

你想用UI創建一些東西嗎?如果是這樣,並且它是您想要使用的UI,只需構建現有電子郵件客戶端的前端即可。決定你想要了解的細節:標題,協議和字節,或按鈕和通知? – 2011-04-13 12:13:59

回答

23

Python語言在其標準庫中提供了對所需協議的原始支持。然後恰當地使用,並且正確解析和組裝「現代」電子郵件可能很難做到。

另外,你沒有說如果你想爲你的電子郵件客戶端創建一個圖形界面 - 如果你想有一個適當的圖形界面 - 直到可用點,這是一個相當大量的工作。

本地電子郵件存儲將是更容易的部分 - 除非您想正確實施mbox文件格式RFC-4155以便其他軟件可以輕鬆讀取/寫入您提取的messgaes,您可以將它們存儲爲Python對象ORM或面向對象的數據庫,如ZODB或MongoDB。

如果您不僅需要玩具電子郵件應用程序,還需要進行大量工作 - 正確編碼電子郵件標題,例如服務器身份驗證和安全身份驗證和傳輸層,解碼電子郵件文本身體本身用於非ASCII消息。儘管Python標準庫中的模塊確實實現了很多功能,但是他們的文檔在實例上很少 - 而且完整的電子郵件客戶端必須全部使用。

當然,啓動一個電子郵件客戶端,甚至是一個玩具的地方,都會查看最新的RFC電子郵件(並且您必須從這裏選擇http://www.ietf.org/rfc/rfc-index,因爲只需查找「電子郵件rfc「在谷歌給出了一個糟糕的結果)。

+0

驚人的答覆謝謝! :) – RadiantHex 2011-04-13 13:20:25

1

如果我是你,我會看看現有的電子郵件客戶端源代碼得到一個想法:雷鳥,sylpheed爪,笨蛋...

根據您要支持的功能集,這是一個大項目。

+2

不舒服:任何一個製作和維護的電子郵件客戶端(如雷鳥)的來源對於能夠掌握如何繼續或從中學習任何東西的人來說都將是絕對巨大的。他希望得到一個「示例」電子郵件客戶......這是他想寫的東西。 – jsbueno 2011-04-13 11:53:46

+0

我同意。由於Thunderbird可能是用C++完成的,如果它們沒有記錄它,這個代碼看起來可能完全不同於許多類似C++的語言。這會變得更糟,如果他們使用了很多實踐,你看到的是針對C程序 – 2012-10-03 13:43:44

3

不要阻止你,但你爲什麼要製作一個電子郵件客戶端?

A lot電子郵件客戶端已經存在,幾乎所有客戶想要的。一個完全靈活的客戶端,一個輕量級的客戶端,命令行,webmail,它已經存在。

也許你想爲你的用戶提供一些獨特的功能,但是我認爲你可以通過編寫一個插件,例如Thunderbird來更好。或者,如果您真的對客戶本身感興趣,則應該嘗試在已有項目中做出貢獻。


但在話題,寫客戶端前端是一樣寫任何GUI困難,但是郵件的內部是用Python很容易的,因爲它有很多內置圖書館像IMAP,SMTP,POP3等。

5

我想你會發現很多客戶重要的部分預包裝的:

電子郵件檢索 - 我認爲這是由許多Python庫的覆蓋。

電子郵件發送 - 這不會很難,它也很有可能被覆蓋。

電子郵件格式化 - 我知道這是因爲我只是用它來解析客戶端的單個和多個部分的電子郵件。

電子郵件渲染 - 我會拍攝某種HTML渲染器。有一個來自Mozilla項目的渲染器的Python接口。我猜想還有其他渲染引擎也有python接口。我知道wxWidgets有一些簡單的HTML設備,重量會輕很多。想想看,Mozilla引擎可能還有其他一些你需要的功能。你將不得不研究每個部分。

它比上面列出的還多得多。像任何值得一樣的東西,它不會在一天內建成。我會精確地展示你想要它做什麼。然後開始製作原型。只是建立一個簡單的框架,做基本的事情。就像它只支持沒有html的消息的文本部分。然後在此基礎上構建。

我很驚訝Python提供的豐富的編碼模塊。我需要過濾html電子郵件,解析樣式表,嵌入樣式以及其他東西。我在某處發現了幾乎所有我需要的函數。當我發現一些CSS表格被gzipped有一個模塊時,我感到特別高興!

所以,如果你是認真的然後挖掘。你會學到很多。 :)

1

取決於您想要建立客戶端的級別。你可以用smtplib這樣的庫快速處理連接/數據。用於GUI的tk。但是,這一切都取決於你完成後的水平。

自己的快速基本工具:簡單。 (帶庫)
寫一個全功能的電子郵件客戶端:很難。

除了使用庫之外,您還可以找到可供您參考的開源項目。我建議你在看看Mailpile

相關問題