我想使用 imapclient 连接到 gmail。我遵循了 Al Sweigart 的“Automate the Boring Stuff with Python”第 16 章中的示例。书中的代码在交互模式下运行良好。但是,Al 和其他人警告不要在您运行的程序中包含密码。我确实设置了一个应用程序密码,它在交互模式下就像一个魅力。但是,当我在将其作为脚本运行时尝试从键盘发送密码作为标准输入时,会返回错误。我也尝试过 input(),它也不起作用。我避免将应用程序密码直接放入代码中;按照大多数标准,这是可以接受的做法吗?另外,我已经从 linux 终端和 spyder 开发环境尝试了下面的代码,两种方式都返回错误。
import imapclient
import getpass
imapObj = imapclient.IMAPClient('imap.gmail.com', ssl=True)
app_password = getpass.getpass('Password')
imapObj.login('john@gmail.com', 'app_password')
预期成绩:successful login
实际结果:
File "/home/john/anaconda3/lib/python3.6/site-packages/imapclient/imapclient.py", line 345, in login
raise exceptions.LoginError(str(e))
LoginError: b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'