尝试获取电子邮件poplib时出现错误

时间:2011-10-12 03:10:15

标签: python email poplib

这是迄今为止我尝试过的:

# 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

这给了我错误:

POP3 Protocol Error: -ERR Unable to log on

有谁知道问题是什么?我正在使用Gmail帐户,所有登录信息都是正确的。

修改

我已经改变了一些代码,现在我得到了他的错误......这里是代码和错误:

import poplib
user = "username@gmail.com"
passs = "password"
pop = poplib.POP3("pop.gmail.com",995)
pop.user(user)
pop.pass_(passs)

我收到此错误:

  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 个答案:

答案 0 :(得分:1)

我找到了有效的代码......这里是:

import poplib

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

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