échec de connexion gmail en utilisant python et imaplib

je cherche de l'aide pour me connecter à un compte gmail et télécharger des e-mails en utilisant un script python. Je suis en train d'adapter une approche trouvé ici, mais j'ai un problème avec l'étape 1, accéder au compte via imap.

voici le code avec lequel je commence:

import email
import imaplib

m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')

j'obtiens l'erreur suivante:

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 est en effet activé dans les paramètres gmail. J'ai regardé l'instruction sur le lien de soutien de google et questions concernant cette erreur dans des situations semblables, comme ici et ici, mais ma situation est différente de la première car

1) il n'a jamais travaillé pour commencer, et

2) Je ne l'exécute pas si souvent pour être bloqué. Son également différent du deuxième exemple parce qu'il s'agit d'un compte gmail normal, pas un domaine personnalisé avec un compte googleapps.

en utilisant le https://accounts.google.com/DisplayUnlockCaptcha pour faire et autoriser l'accès ne fonctionne pas pour moi non plus.

la seule chose qui permet à la connexion de fonctionner est de modifier les paramètres de sécurité de mes comptes google pour "autoriser l'accès pour les applications moins sécurisées".

ma question Est: Comment puis-je corriger mon code (ou ma configuration plus généralement) pour me permettre de me connecter, sans relâcher les paramètres de sécurité de mes comptes? Est-il possible de répondre aux exigences de sécurité en utilisant libimap?

18
demandé sur Community 2014-08-20 23:52:58

4 réponses

si vous voulez éviter cette erreur sans compromettre la sécurité de votre compte, utilisez OAuth pour vous authentifier. Le protocole est documenté ici, et n'est code d'échantillon Python

indépendamment de cela, vous devriez envisager d'activer la vérification en deux étapes sur votre compte pour le rendre plus sûr. Si vous le faites, vous pouvez utiliser un Mot De Passe App pour se connecter à IMAP, ce qui pourrait aussi éviter l'avertissement ci-dessus.

9
répondu Jamie Nicolson 2014-09-30 23:16:03

Vous pouvez essayer d'activer ceci: https://www.google.com/settings/security/lesssecureapps Cette action a résolu le même problème pour moi.

17
répondu Alex Ols 2014-08-22 12:35:53

avec la nouvelle mise à jour gmails, certains serveurs de messagerie ou applications sont bloqués en raison des nouveaux paramètres de sécurité gmails. Pour résoudre cela, je suis allé àhttps://www.google.com/settings/security page et accès "activé" pour les applications moins sécurisées.

2
répondu Raul Cavazos 2014-11-24 08:02:21

j'ai pu résoudre ce problème en utilisant un navigateur en mode texte (elinks) pour vérifier ma connexion à partir du serveur distant. J'avais déjà lutté un moment, donc j'avais déjà essayé d'activer des applications dangereuses et diverses autres incantations.

après ouverture de session à gmail.com dans elinks (utilisant l'interface html seulement et ayant un code de sécurité envoyé à mon téléphone) je pourrais utiliser imaplib pour accéder au compte gmail. On doit probablement faire l'authentification web à partir de la même IP qu'on essaie d'utiliser Python / imaplib de.

il est probablement préférable d'utiliser le protocole OAuth, mais de cette façon j'ai fait tourner mon script sans le réécrire.

0
répondu Åsmund 2016-07-10 12:19:33