read - Error de inicio de sesión de gmail usando python e imaplib
python receive email (4)
Con la nueva actualización de gmail, algunos servidores de correo o aplicaciones se bloquean debido a la nueva configuración de seguridad de gmail. Para resolver esto, fui a la página https://www.google.com/settings/security y al acceso "habilitado" para aplicaciones menos seguras.
Estoy buscando ayuda para iniciar sesión en una cuenta de gmail y descargar algunos correos electrónicos usando un script de python. Estoy tratando de adaptar un enfoque que se encuentra here , pero tengo un problema con el paso 1: acceder a la cuenta a través de imap.
Aquí está el código con el que estoy empezando:
import email
import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login(''myemailaddress'',''mypassword'')
Obtuve el siguiente error:
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)''
De hecho, Imap está habilitado en la configuración de gmail. He mirado las instrucciones en el enlace de asistencia de Google y las preguntas sobre este error en situaciones similares, como here y here , pero mi situación es diferente de la primera porque
1) nunca funcionó para empezar, y
2) No lo estoy ejecutando con tanta frecuencia para ser bloqueado. También es diferente del segundo ejemplo porque se trata de una cuenta de gmail normal, no de un dominio personalizado con una cuenta de Google Apps.
Usar el https://accounts.google.com/DisplayUnlockCaptcha para intentar y permitir el acceso tampoco me funciona.
Lo único que permite que el inicio de sesión funcione es cambiar la configuración de seguridad de mis cuentas de Google para "permitir el acceso a aplicaciones menos seguras".
Mi pregunta es: ¿cómo puedo corregir mi código (o mi configuración en general) para permitirme iniciar sesión, sin relajar la configuración de seguridad de mis cuentas? ¿Hay alguna manera de cumplir con los requisitos de seguridad utilizando libimap?
Pude resolver esto utilizando un navegador de modo de texto (elinks) para verificar mi inicio de sesión desde el servidor remoto. Ya había luchado por un tiempo, así que ya había intentado habilitar aplicaciones no seguras y otros conjuros.
Después de iniciar sesión en gmail.com en elinks (usando la interfaz de solo html y con un código de seguridad enviado a mi teléfono), puedo usar imaplib para acceder a la cuenta de gmail. Presumiblemente, uno debe hacer la autenticación web desde la misma IP desde la que se intenta usar Python / imaplib.
Probablemente es Better ™ usar el protocolo OAuth, pero de esta manera conseguí que mi script se ejecutara de nuevo sin volver a escribirlo.
Puede intentar activar esto: https://www.google.com/settings/security/lesssecureapps Esta acción solucionó el mismo problema para mí.
Si desea evitar este error sin comprometer la seguridad de su cuenta, use OAuth para autenticarse. El protocolo se documenta here , y hay un código de ejemplo de Python que muestra el uso de XOAUTH2 con imaplib.
Independientemente de esto, debe considerar habilitar la verificación en dos pasos en su cuenta para hacerla más segura. Si lo hace, puede usar una Contraseña de aplicación para conectarse a IMAP, lo que también podría evitar la advertencia anterior.