इसलिए मैं अजगर में एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मेरे जीमेल खाते में लॉग इन करता है और फिर मुझे बताता है, जल्द ही एक जीयूआई में, संदेश क्या है। मैं कोड को थोड़ी अधिक उपयोगी बनाने के लिए कोड को थोड़ा और अधिक उपयोगी कर दूंगा लेकिन अभी मैं कच्ची सूचना को पार्स करने में सक्षम होने पर अटक गया हूं। यहां मेरा कोड है:पायथन ईमेल पार्सिंग समस्या
#Read Email Script
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('[email protected]', 'passwordgoeshere')
mail.list()
mail.select("INBOX") # connect to inbox.
result, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, data = mail.fetch(latest_email_id, '(RFC822)')
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
print (email_message['Subject'])
अब मूल रूप से यह मेरे इनबॉक्स में दिए गए नवीनतम ईमेल के विषय को आजमाने और पढ़ने के लिए माना जाता है। हालांकि मैं कंसोल में निम्न त्रुटि संदेश मिलता है:
>>>
Traceback (most recent call last):
File "C:/Users/Dhruvin Desai/Documents/Python/script.py", line 21, in <module>
email_message = email.message_from_string(raw_email)
File "C:\Python33\lib\email\__init__.py", line 40, in message_from_string
return Parser(*args, **kws).parsestr(s)
File "C:\Python33\lib\email\parser.py", line 69, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
TypeError: initial_value must be str or None, not bytes
>>>
मैं नहीं जानता कि क्यों यह आ रहा है, लेकिन इसके बाद से मुझे बता कि email_message
जरूरतों का मूल्य स्ट्रिंग प्रारूप में होना, मैं इस कोशिश की:
email_message = email.message_from_string(str(raw_email))
लेकिन हमेशा कि परिवर्तन के साथ पूरी स्क्रिप्ट चल रहा है, कोई बात नहीं क्या के बाद परिणाम, सांत्वना कह None
मैं क्या करना है पता नहीं है, कृपया मदद में हुई।
का उपयोग कर इस तरह के एक छोटा सा परिवर्तन एक बहुत बड़ा अंतर बना दिया। सहायता के लिए आपका बहुत - बहुत धन्यवाद! – bloodstorm17
@ bloodstorm17 एक बात है जिसे मैं उल्लेख करना भूल गया। जीमेल से प्राप्त सामग्री बेस 64 के साथ एन्कोड किया गया है, आपको वास्तविक विषय प्राप्त करने के लिए इसे डीकोड करने की आवश्यकता है –