2009-04-08 22 views
21

मुझे django की ईमेल भेजने की क्षमताओं से काफी परिचित हो गया है, लेकिन मैंने उपयोगकर्ताओं से ईमेल प्राप्त करने और संसाधित करने के बारे में कुछ भी नहीं देखा है। क्या यह कार्यक्षमता उपलब्ध है?django ईमेल भेजने और प्राप्त करने के लिए?

कुछ Google खोजों ने बहुत ही आशाजनक परिणाम नहीं उठाए हैं। हालांकि मुझे यह मिला: Receive and send emails in python

क्या मुझे अपना खुद का रोल करना होगा? यदि हां, तो मैं उस ऐप को तेज़ी से पोस्ट कर दूंगा जो आप कह सकते हैं ... जो भी आप कहते हैं।

धन्यवाद, जिम

अद्यतन: मैं मैं सिर्फ कुछ कार्यक्षमता जहां साइट के लिए एक छवि ईमेल कर सकते हैं जोड़ने की जरूरत है और इसमें पॉप अप है एक ईमेल सर्वर बनाने की कोशिश कर नहीं कर रहा हूँ, अपने लेखा।

+0

यह प्रश्न भी देखें: http://stackoverflow.com/questions/640970/email-integration –

उत्तर

17

jutda-helpdesk नामक एक ऐप है जो आने वाले ईमेल को संसाधित करने के लिए पाइथन के poplib और imaplib का उपयोग करता है। आपको सिर्फ पीओपी 3 या आईएमएपी एक्सेस के साथ कहीं खाता होना है।

यह उनकी get_email.py से अनुकूलित है:

def process_mail(mb): 
    print "Processing: %s" % q 
    if mb.email_box_type == 'pop3': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 995 
      server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 110 
      server = poplib.POP3(mb.email_box_host, int(mb.email_box_port)) 
     server.getwelcome() 
     server.user(mb.email_box_user) 
     server.pass_(mb.email_box_pass) 

     messagesInfo = server.list()[1] 

     for msg in messagesInfo: 
      msgNum = msg.split(" ")[0] 
      msgSize = msg.split(" ")[1] 
      full_message = "\n".join(server.retr(msgNum)[1]) 

      # Do something with the message 

      server.dele(msgNum) 
     server.quit() 

    elif mb.email_box_type == 'imap': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 993 
      server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 143 
      server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port)) 
     server.login(mb.email_box_user, mb.email_box_pass) 
     server.select(mb.email_box_imap_folder) 
     status, data = server.search(None, 'ALL') 
     for num in data[0].split(): 
      status, data = server.fetch(num, '(RFC822)') 
      full_message = data[0][1] 

      # Do something with the message 

      server.store(num, '+FLAGS', '\\Deleted') 
     server.expunge() 
     server.close() 
     server.logout() 

mb बस कुछ वस्तु सभी मेल सर्वर की जानकारी स्टोर करने के लिए है, बाकी बहुत स्पष्ट होना चाहिए।

संदेश के विशिष्ट हिस्सों को प्राप्त करने के लिए आपको शायद poplib और imaplib पर दस्तावेज़ों की जांच करने की आवश्यकता होगी, लेकिन उम्मीद है कि यह आपको जाने के लिए पर्याप्त है।

2

डीजेंगो वास्तव में एक वेब सर्वर के रूप में लक्षित है (ठीक है, एक वेब सर्वर में फिट फ्रेमवर्क के रूप में), ईमेल सर्वर के रूप में नहीं। मुझे लगता है कि आप किसी कोड को एक Django वेब एप्लिकेशन में डाल सकते हैं जो उस प्रश्न में दिखाए गए कोड के प्रकार का उपयोग करके एक ईमेल सर्वर शुरू करता है, लेकिन मैं वास्तव में इसकी अनुशंसा नहीं करता; यह गतिशील वेब प्रोग्रामिंग की क्षमताओं का दुरुपयोग है।

सामान्य अभ्यास अलग ईमेल और वेब सर्वर होना है, और इसके लिए आप Sendmail या (बेहतर अभी तक) पोस्टफिक्स जैसे कुछ देखना चाहते हैं। पीओपी 3 के लिए आपको डोवॉट या कूरियर जैसे कुछ की आवश्यकता होगी, मुझे लगता है। (ईमेल सर्वर प्राप्त होने पर ईमेल सर्वर को आपके वेब एप्लिकेशन को सूचित करना निश्चित रूप से संभव है, इसलिए यह उन पर कार्य कर सकता है, यदि आप यही करना चाहते हैं।)

EDIT: आपकी टिप्पणियों के जवाब में: हाँ आप हैं एक ईमेल सर्वर (या कम से कम उपयोग) बनाने की कोशिश कर रहा है। एक ईमेल सर्वर केवल एक प्रोग्राम है जो ईमेल प्राप्त करता है (और उन्हें भी भेजने में सक्षम हो सकता है, लेकिन आपको इसकी आवश्यकता नहीं है)।

आप निश्चित रूप से पायथन में एक छोटा ईमेल सर्वर लिख सकते हैं जो केवल इन ईमेल प्राप्त करता है और छवियों को फाइल सिस्टम या डेटाबेस या जो कुछ भी बचाता है। (इसके बारे में एक नया सवाल पूछने लायक हो सकता है) लेकिन इसे अपने Django वेब ऐप का हिस्सा न बनाएं; इसे अपने स्वयं के अलग कार्यक्रम के रूप में रखें।

+1

मैं एक ईमेल सर्वर बनाने की कोशिश नहीं कर रहा हूं, मुझे बस कुछ कार्यक्षमता जोड़ने की आवश्यकता है जहां आप एक छवि को ईमेल कर सकते हैं साइट और यह आपके खाते में पॉप अप है। – Jiaaro

5

मुझे पता है कि यह सवाल अब बहुत पुराना है, लेकिन मैंने सोचा कि मैं भविष्य के संदर्भ के लिए जोड़ दूंगा कि आप http://cloudmailin.com को एक जाना चाहते हैं। हमारे पास सिस्टम का उपयोग करने वाले कुछ django उपयोगकर्ता हैं और यह प्रस्तावित समाधान से थोड़ा आसान होना चाहिए।

+0

धन्यवाद आप स्टीव, यह वही है जो मैं खोज रहा था। –

संबंधित मुद्दे