Как мне сначала войти в систему, а затем продолжить проверять gmail через imaplib и python

Я работал над небольшим проектом Arduino, чтобы активировать сервопривод с флагом каждый раз, когда я получаю новое электронное письмо в GMail. Я хочу войти в Gmail, проверить, есть ли у меня новое электронное письмо, а затем проверять каждые x секунд.

Я обнаружил, что первое соединение проходит нормально, но после этого я получаю сообщение об ошибке, что я не могу использовать ЛОГИН в режиме AUTH, только NONAUTH. Это говорит о том, что, как только я войду в систему, GMail не примет метод.

Вот сценарий:

import serial
import time
import imaplib, re
import getpass

user = raw_input("Enter your GMail username:")
pwd = getpass.getpass("Enter your password: ")
ser = serial.Serial('/dev/tty.usbmodemfa141', 9600)
print "Starting on " +ser.name;
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
while (True):
    conn.login(user,pwd)
    unreadCount = int(re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1))
    if(unreadCount > 0):
        print str(unreadCount) + " new mails!"
        ser.write("M")
    else:
        print "no mail :("
        ser.write("N")
    time.sleep(5)

Я думаю, что я использую conn.login() один раз, а затем другую команду в цикле после этого, ИЛИ я могу выйти из системы после проверки, а затем снова войти в систему каждый раз.

Мысли? Предложения?

1 ответ

Вам нужно вывести строку "conn.login(user,pwd)" из цикла while. Помещение в качестве строки перед циклом while должно работать нормально.

Другие вопросы по тегам