2011-04-13 20 views
13

मैं अज्ञात क्षेत्र यहाँ में venturing हूँ ...ईमेल क्लाइंट बनाने में कितना मुश्किल है? - अजगर

मैं बाहर काम करने के कितना मुश्किल इसे का उपयोग एक ईमेल क्लाइंट को लागू करने से हो सकता है अजगर कोशिश कर रहा हूँ:

  • ईमेल पुनर्प्राप्ति
  • ईमेल भेजने
  • ईमेल स्वरूपण
  • ईमेल प्रतिपादन
इसके अलावा

मैं मैं सोच रहा हूं कि सभी प्रोटोकॉल समर्थन करने के लिए आसान/कठिन हैं उदा। एसएमटीपी, IMAP, POP3 ...


उम्मीद है कि किसी ने मुझे सही दिशा :)

+2

पर एक नज़र डालने की अनुशंसा करता हूं कि मैंने सी ++ टैग हटा दिया है, यह सभी –

+1

पायथन में सी ++ से संबंधित नहीं लगता है: बैटरी शामिल हैं: smtp, imap, pop3 - [इंटरनेट प्रोटोकॉल] (http: // docs। python.org/library/internet.html), [इंटरनेट डाटा हैंडलिंग] (http://docs.python.org/library/netdata.html) –

+1

आप एक यूआई, या नहीं के साथ कुछ का निर्माण करना चाहते हैं? यदि ऐसा है, और यह यूआई है जो आप जिस चीज के साथ खेलना चाहते हैं, तो बस एक मौजूदा ईमेल क्लाइंट को फ्रंटएंड बनाएं। तय करें कि आप क्या सीखना चाहते हैं: हेडर, प्रोटोकॉल और बाइट्स, या बटन और अधिसूचनाएं? –

उत्तर

23

पायथन भाषा अपनी मानक लाइब्रेरी में आवश्यक प्रोटोकॉल के लिए कच्चे समर्थन की पेशकश करती है। उचित रूप से इसका उपयोग करके, और, "आधुनिक दिन" ई-मेल संदेश को ठीक से विश्लेषण और संयोजन करना, हालांकि करना मुश्किल हो सकता है।

इसके अलावा, आपने यह नहीं कहा कि क्या आप अपने ई-मेल क्लाइंट के लिए एक ग्राफिकल इंटरफ़ेस बनाना चाहते हैं - यदि आप उचित ग्राफिकल इंटरफ़ेस रखना चाहते हैं - उपयोग करने योग्य बिंदु तक, यह काफी है बहुत सारा काम।

स्थानीय ई-मेल भंडारण आसान हिस्सा होगा - जब तक आप उस अन्य सॉफ्टवेयर आसानी से पढ़ा/messgaes आप प्राप्त किए गए, तो आप उन्हें अजगर वस्तुओं के रूप में में स्टोर कर सकते हैं का उपयोग कर लिख सकते हैं ठीक से तो एक mbox फ़ाइल प्रारूप RFC-4155 लागू करना चाहते हैं एक ओआरएम या ऑब्जेक्ट ओरिएंटेड डेटाबेस, जैसे कि ZODB, या MongoDB।

यदि आप एक खिलौना ई-मेल ऐप से अधिक चाहते हैं, तो आपके पास बहुत सारे काम होंगे - ठीक से एन्कोडिंग ई-मेल हेडर, उदाहरण के लिए, सर्वर प्रमाणीकरण और सुरक्षित प्रमाणीकरण और परिवहन परतें, ई-मेल टेक्स्ट का डीकोडिंग गैर ASCII संदेशों के लिए खुद को शरीर। यद्यपि पाइथन मानक लाइब्रेरी पर मॉड्यूल बहुत से कार्यान्वित करते हैं, लेकिन उनके दस्तावेज उदाहरणों पर कम हो जाते हैं - और एक पूर्ण ई-मेल क्लाइंट को तब तक उपयोग करना होगा।

निश्चित रूप से एक ई-मेल क्लाइंट शुरू करने की जगह, यहां तक ​​कि एक खिलौना भी, हाल ही में आरएफसी के ई-मेल के लिए एक नज़र डालेगा (और आपको यहां से http://www.ietf.org/rfc/rfc-index से चुनना होगा क्योंकि " ईमेल आरएफसी "गूगल पर एक खराब परिणाम देता है)।

+0

अद्भुत उत्तर धन्यवाद के लिए तैयार हैं! :) – RadiantHex

1

अगर मैं तुम्हें थे, मैं करने के लिए मौजूदा ईमेल-ग्राहकों के सोर्स कोड देखें था में बात कर सकता है एक विचार प्राप्त करें: थंडरबर्ड, sylpheed-claws, mutt ...

उन सुविधाओं के सेट के आधार पर जिन्हें आप समर्थन देना चाहते हैं, यह एक बड़ी परियोजना है।

+2

shure नहीं: किसी भी स्रोत productionâ में और बनाए रखा ई-मेल क्लाइंट जैसे थंडरबर्ड घने विशाल एक में आगे बढ़ने के समझ, या वहाँ से कुछ भी जानने के लिए सक्षम होने के लिए के लिए किया जाएगा। वह एक "उदाहरण" ई-मेल क्लाइंट प्राप्त करने के लिए तैयार था ... जो कि वह लिखने का इरादा रखता है वह स्पष्ट रूप से है। – jsbueno

+0

मैं सहमत हूं।यह गुणा किया जा सकता है क्योंकि थंडरबर्ड शायद सी ++ में किया जाता है, और यदि उन्होंने इसे दस्तावेज़ नहीं किया है, तो कोड कई सी ++ जैसी भाषाओं की तरह कुछ अलग दिख सकता है। यह और भी बदतर हो जाता है अगर वे आपके द्वारा देखे जाने वाले बहुत से प्रथाओं का उपयोग करते हैं जो सी प्रोग्राम –

3

आपको हतोत्साहित नहीं करना है, लेकिन आप एक ईमेल क्लाइंट क्यों बनाना चाहते हैं?

ईमेल क्लाइंट के बहुत पहले से मौजूद हैं, क्लाइंट चाहता है कि बहुत कुछ भी। एक पूर्ण-फ्लेक्स क्लाइंट, लाइटवेट क्लाइंट, कमांड लाइन, वेबमेल, यह सब पहले से मौजूद है।

शायद आप अपने उपयोगकर्ताओं को कुछ अनूठी कार्यक्षमता प्रदान करना चाहते हैं, लेकिन मुझे लगता है कि आप प्लगइन लिखकर बेहतर होंगे, उदाहरण के लिए थंडरबर्ड के लिए। या यदि आप वास्तव में ग्राहक में रुचि रखते हैं, तो आपको पहले से मौजूद प्रोजेक्ट में योगदान करने का प्रयास करना चाहिए।


लेकिन विषय पर, ग्राहक सामने के अंत लेखन बस के रूप में किसी भी जीयूआई लेखन के रूप में मुश्किल है, लेकिन क्योंकि यह की एक बहुत है मेल internals, पायथन में बहुत आसान कर रहे हैं में निर्मित के लिए पुस्तकालयों आईएमएपी, एसएमटीपी, पीओपी 3 जैसी चीजें।

5

मुझे लगता है कि आप ग्राहकों को महत्वपूर्ण भागों prepackaged की ज्यादा मिलेगा:

ईमेल पुनर्प्राप्ति - मुझे लगता है कि अजगर पुस्तकालयों में से कई से आच्छादित है।

ईमेल भेजना - यह कठिन नहीं होगा और यह भी सबसे अधिक संभावना है।

ईमेल स्वरूपण - मुझे पता है कि यह कवर किया गया है क्योंकि मैंने इसे क्लाइंट के लिए एकल और मल्टीपार्ट ईमेल को पार्स करने के लिए उपयोग किया है।

ईमेल प्रतिपादन - मैं किसी प्रकार के HTML प्रस्तुतकर्ता के लिए शूट करूंगा। मोज़िला प्रोजेक्ट से रेंडरर के लिए एक पायथन इंटरफ़ेस है। मुझे लगता है कि अन्य प्रतिपादन इंजन भी हैं जिनमें पाइथन इंटरफेस भी हैं। मुझे पता है कि WxWidgets में कुछ सरल HTML सुविधाएं हैं और बहुत हल्का वजन होगा। इसके बारे में सोचने के लिए आओ मोज़िला इंजन में आपके द्वारा आवश्यक अन्य कार्यों का एक गुच्छा भी हो सकता है। आपको प्रत्येक भाग का शोध करना होगा।

ऊपर सूचीबद्ध की तुलना में इसके लिए बहुत कुछ है। कुछ भी लायक की तरह यह एक दिन में नहीं बनाया जाएगा। मैं ठीक से बताऊंगा कि आप इसे क्या करना चाहते हैं। फिर एक प्रोटोटाइप एक साथ रखना शुरू करें। बस एक साधारण ढांचा बनाएं जो मूलभूत चीजें करता है। जैसे कि यह किसी भी एचटीएमएल के संदेश के पाठ भाग का समर्थन करता है। फिर उस पर निर्माण करें।

मैं पाइथन के साथ उपलब्ध कोडिंग मॉड्यूल की संपत्ति पर हैरान हूं। मुझे एचटीएमएल ईमेल संदेशों, पार्स स्टाइलशीट, एम्बेड शैलियों, और अन्य चीजों के पूरे होस्ट को फ़िल्टर करने की आवश्यकता थी। मुझे बस पाइथन लाइब्रेरी में आवश्यक हर फ़ंक्शन के बारे में पता चला। मैं विशेष रूप से खुश था जब मुझे पता चला कि कुछ सीएसएस शीट्स gzipped हैं कि इसके लिए एक मॉड्यूल था!

तो यदि आप इसके बारे में गंभीर हैं तो खुदाई करें। आप बहुत कम सीखेंगे। :)

1

इस बात पर निर्भर करता है कि आप किस स्तर को क्लाइंट बनाना चाहते हैं। आप संकलन/डेटा को संभालने के लिए smtplib जैसे पुस्तकालयों के साथ कुछ जल्दी से चाबुक कर सकते हैं। और एक जीयूआई के लिए tk। लेकिन फिर यह सब आपके बाद के खत्म होने के स्तर पर निर्भर करता है।

अपने लिए एक त्वरित बुनियादी उपकरण: आसान। (पुस्तकालयों के साथ)
एक पूर्ण-व्युत्पन्न ईमेल क्लाइंट लिखना: हार्ड।

लाइब्रेरी का उपयोग करने के बजाय, आप एक ओपन सोर्स प्रोजेक्ट भी ढूंढ सकते हैं जिसमें आप योगदान दे सकते हैं। मैं Mailpile