gmail échec de la connexion à l'aide de python et imaplib
Je suis à la recherche d'un peu d'aide en se connectant à un compte gmail et le téléchargement de certains e-mails à l'aide d'un script python. Je suis en train d'adapter une approche trouvé ici, mais je suis confronté à un problème avec l'étape 1, l'accès au compte via le protocole imap.
voici le code, je commence avec:
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ée dans les paramètres gmail. J'ai regardé les instructions sur le google lien de support et questions à propos de cette erreur dans des situations similaires, tels que ici et ici, mais ma situation est différente de la première car
1) elle n'a jamais travaillé pour commencer, et
2) je ne suis pas d'exécution jusqu'à souvent à s'obstruer. Il est aussi différent du deuxième exemple parce que c'est normal compte gmail, pas un domaine personnalisé avec un compte google apps.
À l'aide de la https://accounts.google.com/DisplayUnlockCaptcha à essayer et à permettre l'accès ne fonctionne pas pour moi non plus.
La seule chose qui permet la connexion à travailler est de changer mes comptes google les paramètres de sécurité pour "autoriser l'accès pour moins d'applications sécurisées".
Ma question est: comment puis-je corriger mon code (ou de ma configuration plus généralement) pour me permettre de me connecter, sans se détendre mes comptes, les paramètres de sécurité? Est-il possible de répondre aux exigences de sécurité en utilisant libimap?
Je n'ai en effet, je vais modifier le dire
Vous avez besoin d'utiliser moins "sûr", ou intégrer le soutien à googles système d'authentification oauth2.
J'ai couru le même code et exécutée sans erreur. Je soupçonne que cela a quelque chose à faire avec vos paramètres ou des informations d'identification
Double Possible de Comment puis-je éviter de google serveur de courrier me demandant de me connecter via un navigateur?
OriginalL'auteur whopper510 | 2014-08-20
Vous devez vous connecter pour publier un commentaire.
Si vous voulez éviter cette erreur, sans compromettre la sécurité de votre compte, utilisez le protocole OAuth pour s'authentifier. Le protocole est documenté ici, et il n'y a Exemple de code Python qui montre l'utilisation de XOAUTH2 avec imaplib.
Indépendant de cela, vous devriez considérer l'activation de la vérification en deux étapes sur votre compte afin de la rendre plus sûre. Si vous le faites, vous pouvez utiliser un Mot De Passe D'Application pour se connecter à un serveur IMAP, ce qui pourrait également éviter l'avertissement ci-dessus.
OriginalL'auteur
Vous pouvez essayer d'activer cette: https://www.google.com/settings/security/lesssecureapps
Cette action a résolu le même problème pour moi.
Cela fonctionne pour moi. Mais, je l'ai indiqué dans ma question que j'ai fait cela, et spécifiquement demandé s'il y avait un moyen d'obtenir imaplib de travail sans changer mon compte paramètres de sécurité, donc je ne peux pas marquer ce que correct.
a fonctionné pour moi aussi, merci
Cela ne fonctionne pas pour moi, si je lance mes tests à l'aide de menu fixe avec Ubuntu Linux. Mais, localement, il fonctionne. Toutes les autres pensées?
OriginalL'auteur
Avec la nouvelle gmails mise à jour, certains mail servr ou des applications bloqué en raison de la nouvelle gmails paramètres de sécurité. Pour résoudre ce problème, je suis allé à https://www.google.com/settings/security page et "activé" l'Accès pour moins d'applications sécurisées.
OriginalL'auteur
J'ai été en mesure de 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à eu un tout, donc j'avais déjà essayé activation dangereux apps et divers autres incantations.
Après la connexion gmail.com dans elinks (à l'aide de html seule interface et d'avoir un code de sécurité envoyé de mon téléphone) je pourrais utiliser imaplib à l'accès au compte gmail. Sans doute on doit faire web d'authentification à partir de la même adresse IP que l'on essaie d'utiliser Python/imaplib.
Il est probablement Préférable™ pour utiliser le protocole d'authentification OAuth, mais de cette façon, j'ai obtenu mon script qui s'exécute de nouveau sans avoir à le réécrire.
OriginalL'auteur