Aide with error when trying to get email poplib

3.1k views Asked by At

This what ive tried so far :

# view and delete e-mail using the POP3 protocol

import sys, getpass, poplib, re

# change according to your needs
POPHOST = "pop3.126.com"
POPUSER = "Username"
POPPASS = "pass"

# the number of message body lines to retrieve
MAXLINES = 10
HEADERS = "From To Subject".split()

# headers you're actually interested in
rx_headers  = re.compile('|'.join(HEADERS), re.IGNORECASE)

try:
    # connect to POP3 and identify user
    pop = poplib.POP3(POPHOST)
    pop.user(POPUSER)

    if not POPPASS or POPPASS=='=':
        # if no password was supplied, ask for it
        POPPASS = getpass.getpass("Password for %s@%s:" % (POPUSER, POPHOST))

    # authenticate user
    pop.pass_(POPPASS)

    # get general information (msg_count, box_size)
    stat = pop.stat(  )

    # print some information
    print "Logged in as %s@%s" % (POPUSER, POPHOST)
    print "Status: %d message(s), %d bytes" % stat

    bye = 0
    count_del = 0
    for n in range(stat[0]):

        msgnum = n+1

        # retrieve headers
        response, lines, bytes = pop.top(msgnum, MAXLINES)

        # print message info and headers you're interested in
        print "Message %d (%d bytes)" % (msgnum, bytes)
        print "-" * 30
        print "\n".join(filter(rx_headers.match, lines))
        print "-" * 30

        # input loop
        while 1:
            k = raw_input("(d=delete, s=skip, v=view, q=quit) What?")
            k = k[:1].lower(  )
            if k == 'd':
                # Mark message for deletion
                k = raw_input("Delete message %d? (y/n)" % msgnum)
                if k in "yY":
                    pop.dele(msgnum)
                    print "Message %d marked for deletion" % msgnum
                    count_del += 1
                    break
            elif k == 's':
                print "Message %d left on server" % msgnum
                break
            elif k == 'v':
                print "-" * 30
                print "\n".join(lines)
                print "-" * 30
            elif k == 'q':
                bye = 1
                break

        # done ...
        if bye:
            print "Bye"
            break

    # summary
    print "Deleting %d message(s) in mailbox %s@%s" % (
        count_del, POPUSER, POPHOST)

    # close operations and disconnect from server
    print "Closing POP3 session"
    pop.quit(  )

except poplib.error_proto, detail:

    # possible error
    print "POP3 Protocol Error:", detail

this give me the error:

POP3 Protocol Error: -ERR Unable to log on

Does anyone know what the problem is? I'm using a gmail account and all the login information is correct.

Edit:

ive changed the code up a bit and now i get his error...here the code and the error:

import poplib
user = "[email protected]"
passs = "password"
pop = poplib.POP3("pop.gmail.com",995)
pop.user(user)
pop.pass_(passs)

and i get this error:

  File "C:\Python27\lib\poplib.py", line 86, in __init__
    self.welcome = self._getresp()
  File "C:\Python27\lib\poplib.py", line 124, in _getresp
    resp, o = self._getline()
  File "C:\Python27\lib\poplib.py", line 108, in _getline
    if not line: raise error_proto('-ERR EOF')
error_proto: -ERR EOF
1

There are 1 answers

1
P'sao On BEST ANSWER

i have found code that works...here it is:

import poplib

M = poplib.POP3_SSL('pop3.live.com', 995) #Connect to hotmail pop3 server
M.set_debuglevel(2)
success = False;
user = "[email protected]"

while success == False:
    try:
        password = raw_input("password: ")
        M.user(user)
        M.pass_(password)
    except:
        print "Invalid credentials"
    else:
        print "Successful login"
        success = True