poplib मॉड्यूल POP3 और POP3_SSL क्लासेस प्रदान करता है जो POP3 सर्वर से कनेक्ट करके ईमेल प्राप्त करने की सुविधा देते हैं।
क्लासेस
- POP3 - मानक POP3 कनेक्शन (RFC 1939)
- POP3_SSL - SSL/TLS लेयर के साथ POP3 (सुरक्षित)
नोट: POP3 अप्रचलित हो रहा है। यदि आपका मेल सर्वर IMAP सपोर्ट करता है, तो imaplib.IMAP4 का उपयोग करना बेहतर है।
मुख्य मेथड्स
| मेथड | विवरण |
|---|---|
getwelcome() | सर्वर का स्वागत संदेश लौटाता है |
user(username) | यूज़रनेम भेजता है |
pass_(password) | पासवर्ड भेजता है |
stat() | मेलबॉक्स स्टेटस: (मैसेज काउंट, साइज़) |
list() | मैसेज सूची: (response, ['msg_num octets', ...], octets) |
retr(msgnum) | निर्दिष्ट मैसेज प्राप्त करता है, seen फ्लैग सेट करता है |
dele(msgnum) | मैसेज को डिलीशन के लिए फ्लैग करता है |
top(msgnum, lines) | हेडर + निर्दिष्ट लाइन्स प्राप्त करता है |
quit() | साइनऑफ: चेंजेस कमिट, कनेक्शन बंद |
उदाहरण: Gmail से अनरीड मैसेजेस प्राप्त करना
import poplib
# SSL कनेक्शन (पोर्ट 995)
box = poplib.POP3_SSL('pop.gmail.com', 995)
# लॉगिन
box.user("your_email@gmail.com")
box.pass_("your_app_password") # ऐप पासवर्ड उपयोग करें
# मैसेज काउंट
num_messages = len(box.list()[1])
print(f"कुल मैसेजेस: {num_messages}")
# सभी मैसेजेस प्राप्त करें
for i in range(num_messages):
# retr() टपल लौटाता है: (response, [lines], octets)
response, lines, octets = box.retr(i + 1)
print(f"\n--- मैसेज {i+1} ---")
for line in lines:
print(line.decode('utf-8', errors='ignore'))
# कनेक्शन बंद
box.quit()
उदाहरण: केवल हेडर्स देखना (top)
import poplib
box = poplib.POP3_SSL('pop.gmail.com', 995)
box.user("your_email@gmail.com")
box.pass_("your_app_password")
# पहले 5 मैसेजेस के हेडर्स देखें
for i in range(min(5, len(box.list()[1]))):
response, lines, octets = box.top(i + 1, 10) # हेडर + 10 लाइन्स
print(f"\n=== मैसेज {i+1} हेडर ===")
for line in lines:
print(line.decode('utf-8', errors='ignore'))
box.quit()
महत्वपूर्ण सेटिंग्स (Gmail के लिए)
- Gmail में 2-स्टेप वेरिफिकेशन इनेबल करें
- ऐप पासवर्ड जनरेट करें (सामान्य पासवर्ड काम नहीं करेगा)
- POP एक्सेस इनेबल करें: Settings → Forwarding and POP/IMAP → "Enable POP for all mail"
त्रुटि संचालन
import poplib
import socket
try:
box = poplib.POP3_SSL('pop.gmail.com', 995, timeout=30)
box.user("email@gmail.com")
box.pass_("password")
# ... ऑपरेशन्स
except poplib.error_proto as e:
print(f"POP3 प्रोटोकॉल त्रुटि: {e}")
except socket.timeout:
print("कनेक्शन टाइमआउट")
except Exception as e:
print(f"त्रुटि: {e}")
finally:
try:
box.quit()
except:
pass
POP3 vs IMAP
| विशेषता | POP3 | IMAP |
|---|---|---|
| सिंक | वन-वे (डाउनलोड) | टू-वे (सिंक) |
| सर्वर पर मेल | आमतौर पर डिलीट हो जाता है | सर्वर पर रहता है |
| फोल्डर सपोर्ट | नहीं | हाँ |
| एकाधिक डिवाइस | खराब | उत्कृष्ट |
सिफारिश: आधुनिक एप्लिकेशंस के लिए imaplib या हाई-लेवल लाइब्रेरी जैसे imapclient, mailbox उपयोग करें।