ошибка входа в gmail с использованием python и imaplib

Я ищу некоторую помощь, войдя в учетную запись gmail и загрузив некоторые электронные письма с помощью скрипта python. Я пытаюсь адаптировать найденный подход здесь, но у меня проблема с шагом 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: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)'

Imap действительно включен в настройках gmail. Я посмотрел инструкцию по ссылке поддержки google и вопросы, касающиеся этой ошибки в похожих ситуациях, таких как здесь и здесь, но моя ситуация отличалась от первой, потому что
1) он никогда не работал, а
2) я не запускаю его так часто, чтобы получить блокировку. Он также отличается от второго примера, потому что это обычная учетная запись gmail, а не пользовательский домен с учетной записью google apps.
используя https://accounts.google.com/DisplayUnlockCaptcha попробовать и разрешить доступ для меня тоже не работает.

единственное, что позволяет войти в систему, чтобы работать, чтобы изменить Мои настройки безопасности учетных записей google, чтобы "разрешить доступ для менее безопасных приложений".

мой вопрос: как я могу исправить свой код (или мою настройку в целом), чтобы позволить мне войти в систему, не ослабляя настройки безопасности моих учетных записей? Есть ли способ удовлетворить требования безопасности с помощью libimap?

4 ответов


Если вы хотите избежать этой ошибки без ущерба для безопасности вашей учетной записи, используйте OAuth для аутентификации. Протокол документирован здесь, и пример кода Python это показывает использование XOAUTH2 с imaplib.

независимо от этого, вы должны рассмотреть включение двухэтапной проверки на ваш счет, чтобы сделать его более безопасным. Если вы это сделаете, вы можете использовать Пароль для подключения к IMAP, что также может избежать выше предупреждение.


вы можете попробовать включить это:https://www.google.com/settings/security/lesssecureapps Это действие решило для меня ту же проблему.


с новым обновлением gmails некоторые почтовые серверы или приложения блокируются из-за новых настроек безопасности gmails. Чтобы решить эту проблему, я пошел в https://www.google.com/settings/security Страница и "включен" доступ для менее безопасных приложений.


Я смог решить эту проблему, используя браузер текстового режима (elinks) для проверки моего входа с удаленного сервера. Я уже боролся некоторое время, поэтому я уже пытался включить небезопасные приложения и различные другие заклинания.

после входа в систему gmail.com в elinks (используя только html-интерфейс и имея код безопасности, отправленный на мой телефон) я мог бы использовать imaplib для доступа к учетной записи gmail. Предположительно, необходимо выполнить веб-аутентификацию с того же IP-адреса, который пытается использовать Python/imaplib от.

вероятно, лучше использовать протокол OAuth, но таким образом я снова запустил свой скрипт, не переписывая его.