Вопрос:
Я ищу помощь в регистрации в учетной записи gmail и загрузке некоторых писем с помощью python script. Я пытаюсь адаптировать найденный подход здесь, но я столкнулся с проблемой с шагом 1, обращаясь к учетной записи через imap.
вот код, который я начинаю с:
import email import imaplib m = imaplib.IMAP4_SSL(«imap.gmail.com»,993) rc, resp = m.login(‘myemailaddress’,’mypassword’)
Я получаю следующую ошибку:
Traceback (most recent call last): File «email.py», line 1, in <module> import email, imaplib File «/home/will/wd/email.py», line 14, in <module> m.login(‘myemailaddress’,’mypassword’) File «/usr/lib/python3.4/imaplib.py», line 538, in login raise self.error(dat[-1]) imaplib.error: b'[ALERT] Please log in via your web browser: (Failure)’
Imap действительно включен в настройках gmail. Я просмотрел инструкцию по ссылке поддержки google и вопросы относительно этой ошибки в подобных ситуациях, например здесь и здесь, но моя ситуация отличается от первой, потому что
1) она никогда не срабатывала, и 2) Я не запускаю ее так часто, чтобы ее заблокировали. Он также отличается от второго примера, потому что это обычная учетная запись gmail, а не настраиваемый домен с учетной записью Google Apps.
Использование https://accounts.google.com/DisplayUnlockCaptcha, чтобы попытаться разрешить доступ, также не работает для меня.
Единственное, что позволяет войти в систему, – это изменить настройки безопасности учетных записей google, чтобы “разрешить доступ для менее безопасных приложений”.
Мой вопрос: как я могу исправить свой код (или мою настройку в более общем плане), чтобы я мог войти в систему, не отключив настройки безопасности моих учетных записей? Есть ли способ удовлетворить требования безопасности с помощью libimap?
Лучший ответ:
Если вы хотите избежать этой ошибки без ущерба для безопасности своей учетной записи, используйте OAuth для аутентификации. Протокол документирован здесь, и есть код примера Python который показывает использование XOAUTH2 с imaplib.
Независимо от этого, вы должны рассмотреть возможность включения двухэтапной аутентификации в вашей учетной записи, чтобы сделать ее более безопасной. Если вы это сделаете, вы можете использовать Пароль приложения для подключения к IMAP, что также может избежать предупреждения выше.
Ответ №1
Вы можете попытаться включить это: https://www.google.com/settings/security/lesssecureapps
Это действие решило для меня ту же проблему.
Ответ №2
При обновлении нового gmail некоторые почтовые службы или приложения блокируются из-за новых настроек безопасности gmails. Чтобы решить эту проблему, я перешел на страницу https://www.google.com/settings/security и “включен” для менее безопасных приложений.
Ответ №3
Мне удалось решить эту проблему, используя браузер текстового режима (elinks), чтобы проверить мой логин с удаленного сервера. Я уже некоторое время боролся, поэтому я уже пытался включить небезопасные приложения и различные другие заклинания.
После входа в gmail.com в elinks (используя интерфейс html и имеющий код безопасности, отправленный на мой телефон), я могу использовать imaplib для доступа к учетной записи gmail. Предположительно, необходимо выполнить проверку подлинности в Интернете с того же IP-адреса, который пытается использовать Python/imaplib.
Вероятно, лучше и торговать; для использования протокола OAuth, но таким образом я снова запустил свой script, не переписывая его.