python - 如果我使用 poplib 向 POP 服务器提供无效凭据,为什么我不能使用正确的凭据重试?

标签 python poplib

我正在编写一个脚本来登录 Hotmail。它要求用户输入密码,如果密码正确,则一切顺利。

如果他们第一次密码错误,则有效密码在后续尝试中将不起作用。

这是我用来让用户输入密码的:

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

以下是调试级别 2 打开时的输出:

$ python my_program.py
password: password
*cmd* 'USER email@hotmail.com'
*put* 'USER email@hotmail.com'
*get* '+OK password required\r\n'
*resp* '+OK password required'
*cmd* "PASS password"
*put* "PASS password"
*get* '+OK mailbox has 1 messages\r\n'
*resp* '+OK mailbox has 1 messages'
Successful login

$ python my_program.py
password: 1234
*cmd* 'USER email@hotmail.com'
*put* 'USER email@hotmail.com'
*get* '+OK password required\r\n'
*resp* '+OK password required'
*cmd* 'PASS 1234'
*put* 'PASS 1234'
*get* '-ERR authentication failed\r\n'
*resp* '-ERR authentication failed'
Invalid credentials
password: password
*cmd* 'USER email@hotmail.com'
*put* 'USER email@hotmail.com'
*get* '+OK password required\r\n'
*resp* '+OK password required'
*cmd* "PASS password"
*put* "PASS password"
Invalid credentials

我在这里缺少什么?我应该指出,我对 python 很陌生。

最佳答案

好吧,我想您只能使用 poplib 中的对象进行一次登录尝试。解决方案是将“M”的声明向下移动到 while 循环中(我发誓我在发布之前尝试过,但我一定以某种方式将其塞满了)。

关于python - 如果我使用 poplib 向 POP 服务器提供无效凭据,为什么我不能使用正确的凭据重试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971506/

相关文章:

python - 特征缩放以相同的比例转换列中的不同值

python - 删除 pandas 中的列

Python Pandas : convert a column to a string?

python - 在 Python 生成器中使用 for...else

python-3.x - poplib 标记如所见

python - 地球卫星下方的天空可见区域

Python Poplib 错误

python - Poplib 无法正常工作?

python-3.x - Python 3 - 如何仅提取电子邮件正文

python - 使用 Python 和 poplib 获取电子邮件