通过POP3下载邮件

    POP3协议本身很简单,以下面的代码为例,我们来获取最新的一封邮件内容:

    import poplib



    # 输入邮件地址, 口令和POP3服务器地址:

    email = input('Email: ')

    password = input('Password: ')

    pop3server = input('POP3 server: ')



    # 连接到POP3服务器:

    server = poplib.POP3(pop3_server)

    # 可以打开或关闭调试信息:

    server.set_debuglevel(1)

    # 可选:打印POP3服务器的欢迎文字:

    print(server.getwelcome().decode('utf-8'))



    # 身份认证:

    server.user(email)

    server.pass
    (password)



    # stat()返回邮件数量和占用空间:

    print('Messages: %s. Size: %s' % server.stat())

    # list()返回所有邮件的编号:

    resp, mails, octets = server.list()

    # 可以查看返回的列表类似[b'1 82923', b'2 2184', …]

    print(mails)



    # 获取最新一封邮件, 注意索引号从1开始:

    index = len(mails)

    resp, lines, octets = server.retr(index)



    # lines存储了邮件的原始文本的每一行,

    # 可以获得整个邮件的原始文本:

    msg_content = b'\r\n'.join(lines).decode('utf-8')

    # 稍后解析出邮件:

    msg = Parser().parsestr(msg_content)



    # 可以根据邮件索引号直接从服务器删除邮件:

    # server.dele(index)

    # 关闭连接:

    server.quit()

    用POP3获取邮件其实很简单,要获取所有邮件,只需要循环使用 retr() 把每一封邮件内容拿到即可。真正麻烦的是把邮件的原始内容解析为可以阅读的邮件对象。