Почему python getpass не работает для подключения к gmail с помощью imapclient, и как мне вместо этого выполнить подключение? - PullRequest
0 голосов
/ 24 января 2019

Я хочу подключиться к Gmail, используя imapclient.Я следовал примеру из книги Аль Суигарта «Автоматизировать скучные вещи с помощью Python», глава 16.Код из книги хорошо работает в интерактивном режиме.Тем не менее, Ал и другие предупреждают, чтобы не включать пароли в программу, которую вы запускаете.Я установил пароль приложения, который работает как брелок в интерактивном режиме.Но возвращается ошибка, когда я пытаюсь отправить пароль с клавиатуры в качестве стандартного ввода при запуске его в качестве сценария.Я также попробовал 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)'
...