2008-11-24 15 views
10

tldr: क्या कोई मुझे दिखा सकता है कि इस पायथन iMAP उदाहरण को सही ढंग से कैसे प्रारूपित किया जाए, तो यह काम करता है?पायथन iMAP ईमेल पहुंच के लिए उचित रूप से स्वरूपित उदाहरण?

https://docs.python.org/2.4/lib/imap4-example.html

import getpass, imaplib 

M = imaplib.IMAP4() 
M.login(getpass.getuser(), getpass.getpass()) 
M.select() 
typ, data = M.search(None, 'ALL') 
for num in data[0].split(): 
    typ, data = M.fetch(num, '(RFC822)') 
    print 'Message %s\n%s\n' % (num, data[0][1]) 
M.close() 
M.logout() 

अपने ईमेल मान लिया जाये से

कि "[email protected]" और पासवर्ड "पासवर्ड," यह कैसे दिखना चाहिए है? मैंने M.login(getpass.getuser([email protected]), getpass.getpass(password)) की कोशिश की और यह समय समाप्त हो गया। यहां पूरा नयाबी, इसलिए यह बहुत संभव है कि मुझे कुछ स्पष्ट याद आया (जैसे पहले आईमैप ऑब्जेक्ट बनाना? सुनिश्चित नहीं)।

+2

कोड का चयन करें, Ctrl + K – jfs

उत्तर

2

क्या आप IMAP होस्ट और पोर्ट निर्दिष्ट करना भूल गए थे? के प्रभाव से कुछ का उपयोग करें:

M = imaplib.IMAP4_SSL('imap.gmail.com') 

या,

M = imaplib.IMAP4_SSL() 
M.open('imap.gmail.com') 
11
import imaplib 

# you want to connect to a server; specify which server 
server= imaplib.IMAP4_SSL('imap.googlemail.com') 
# after connecting, tell the server who you are 
server.login('[email protected]', 'password') 
# this will show you a list of available folders 
# possibly your Inbox is called INBOX, but check the list of mailboxes 
code, mailboxen= server.list() 
print mailboxen 
# if it's called INBOX, then… 
server.select("INBOX") 

अपने कोड के बाकी सही लगता है।

+2

दबाएं बस दूसरों को बचाने के लिए जो इसे देख सकते हैं ... यह "IMAP4_SSL" है न केवल "IMAP_SSL"। – Seaux

+0

@ocdcoder: अच्छा पकड़, धन्यवाद। – tzot

11

यहां एक स्क्रिप्ट है जिसका उपयोग मैं अपने मेलबॉक्स से लॉगवॉच जानकारी को पकड़ने के लिए करता था। Presented at LFNW 2008 -

#!/usr/bin/env python 

''' Utility to scan my mailbox for new mesages from Logwatch on systems and then 
    grab useful info from the message and output a summary page. 

    by Brian C. Lane <[email protected]> 
''' 
import os, sys, imaplib, rfc822, re, StringIO 

server ='mail.brianlane.com' 
username='yourusername' 
password='yourpassword' 

M = imaplib.IMAP4_SSL(server) 
M.login(username, password) 
M.select() 
typ, data = M.search(None, '(UNSEEN SUBJECT "Logwatch")') 
for num in data[0].split(): 
    typ, data = M.fetch(num, '(RFC822)') 
# print 'Message %s\n%s\n' % (num, data[0][1]) 

    match = re.search( "^(Users logging in.*?)^\w", 
         data[0][1], 
         re.MULTILINE|re.DOTALL) 
    if match: 
     file = StringIO.StringIO(data[0][1]) 
     message = rfc822.Message(file) 
     print message['from'] 
     print match.group(1).strip() 
     print '----' 

M.close() 
M.logout() 
+4

कैविट प्रोग्रामर: पाइथन 2.3 के बाद से पाइथन मॉड्यूल "आरएफसी 822" का उपयोग बहिष्कृत कर दिया गया है। (स्रोत: http://docs.python.org/2.6/library/rfc822.html) इसके बजाय, ईमेल मॉड्यूल का उपयोग करने पर विचार करें। –

0

M.login(getpass.getuser([email protected]), getpass.getpass(password)) के बजाय आप M.login('[email protected]', 'password') उपयोग करने की आवश्यकता है, यानी सादा तार (या बेहतर है, उन्हें युक्त चर)। आपके प्रयास को वास्तव में काम नहीं करना चाहिए था, क्योंकि getpass के getuser तर्क नहीं लेते हैं, लेकिन केवल उपयोगकर्ता लॉगिन नाम लौटाते हैं। और [email protected] एक मान्य वैरिएबल नाम भी नहीं है (आपने इसे उद्धरण में नहीं रखा है) ...

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