(Python 3)imaplib从.txt文件登录

(Python 3)imaplib从.txt文件登录,python,file,while-loop,imap,imaplib,Python,File,While Loop,Imap,Imaplib,在一个名为“emails.txt”的文件中,我几乎没有这种格式的帐户-email:pw。 我已经完成了拆分,一切都很完美,但前提是列表中只有一个帐户:pw 如果我输入2个或更多,我将在第一个帐户上登录失败 以下是代码(不包括登录名和功能) 我该怎么做,才能做到: 从列表中的第一个帐户登录,然后执行此操作 从列表中的第二个帐户登录,并完成工作等 由于您没有提供示例emails.txt文件,我将尝试猜测实际发生的情况。 如果这是错的,我很抱歉 请注意,中的行对于电子邮件中的行:不包括尾随的

在一个名为“emails.txt”的文件中,我几乎没有这种格式的帐户-
email:pw
。 我已经完成了拆分,一切都很完美,但前提是列表中只有一个
帐户:pw

如果我输入2个或更多,我将在第一个帐户上登录失败

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

我该怎么做,才能做到:

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

由于您没有提供示例
emails.txt
文件,我将尝试猜测实际发生的情况。 如果这是错的,我很抱歉

请注意,
中的行对于电子邮件中的行:
不包括尾随的换行符。 在编辑时,可能没有在最后一行的末尾插入换行符(这可能会导致以后的自动化问题,但这不是重点)

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

删除尾随换行符的一种方法是使用
strip()
函数,如下所示:
PASSWORD=line.split(“:”,1)[1].strip()


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

谢谢你。脱衣舞成功了!
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()