(Python 3)imaplib从.txt文件登录
在一个名为“emails.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文件,我将尝试猜测实际发生的情况。 如果这是错的,我很抱歉 请注意,中的行对于电子邮件中的行:不包括尾随的
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()