Properly formatted example for Python iMAP email access?

前端 未结 4 1938
故里飘歌
故里飘歌 2021-02-01 09:57

tldr: Can someone show me how to properly format this Python iMAP example so it works?

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

<         


        
相关标签:
4条回答
  • 2021-02-01 10:30

    Did you forget to specify the IMAP host and port? Use something to the effect of:

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

    or,

    M = imaplib.IMAP4_SSL()
    M.open( 'imap.gmail.com' )
    
    0 讨论(0)
  • 2021-02-01 10:32

    Here is a script I used to use to grab logwatch info from my mailbox. 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 <bcl@brianlane.com>
    '''
    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()
    
    0 讨论(0)
  • 2021-02-01 10:34
    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@gmail.com', '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")
    

    The rest of your code seems correct.

    0 讨论(0)
  • 2021-02-01 10:36

    Instead of M.login(getpass.getuser(email@gmail.com), getpass.getpass(password)) you need to use M.login('email@gmail.com', 'password'), i.e. plain strings (or better, variables containing them). Your attempt actually shouldn't have worked at all, since getpass's getuser doesn't take arguments but merely returns the user login name. And email@gmail.com isn't even a valid variable name (you didn't put it into quotes)...

    0 讨论(0)
提交回复
热议问题