(Python 3)imaplib从.txt fi登录

2024-04-24 21:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个名为“的文件中”电子邮件.txt“我几乎没有这种格式的帐户-email:pw。 我已经完成了split,一切都很完美,但前提是列表中只有一个account:pw。你知道吗

如果我放了2个或更多,我的第一个帐户登录失败。你知道吗

下面是代码(不包括登录名和功能)

with open('emails.txt') as emails:
    for line in emails:

        EMAIL_ACCOUNT = line.split(":", -2)[-2]
        PASSWORD = line.split(":", 1)[1]

        print(PASSWORD)

        EMAIL_FOLDER = "INBOX"

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

        try:
            rv, data = M.login(EMAIL_ACCOUNT, PASSWORD)
        except imaplib.IMAP4.error:
            print("Failed!" + EMAIL_ACCOUNT)
            sys.exit(1)
            time.sleep()
        M.logout()

我该怎么做才能做到:

    1. 从列表中的第一个帐户登录,然后执行此操作
    1. 从列表中的第二个帐户登录,并完成工作等

Tags: 文件txt列表电子邮件emailline帐户account
1条回答
网友
1楼 · 发布于 2024-04-24 21:29:51

因为您没有提供示例emails.txt文件,所以我将尝试猜测实际发生的情况。 抱歉,如果这是错误的!你知道吗

注意,for line in emails:中的行确实包含尾部换行符。 也许在编辑时没有在最后一行的末尾插入换行符(这可能会导致以后的自动化问题,但这不是重点)。你知道吗

因此,当您有一个文件email1:password1(密码后没有换行符)时,一切都很好。 当您有一个文件email1:password1\nemail2:password2(这里,\n是换行符)时,您的程序会将第一封电子邮件的密码视为password1\n,而不仅仅是password1。你知道吗

删除尾随换行符的一种方法是使用strip()函数,如:PASSWORD = line.split(":", 1)[1].strip()。你知道吗


此外,遵循“一行是以换行符结尾的东西”的定义也是一个好习惯,即在最后一行之后再加一个换行符。这可以实现一致性,简化自动化,并删除角情况。但我离题了。

相关问题 更多 >