Python: ошибка Imaplib

import serial
import imaplib
from time import sleep

IMAP_SERVER='imap.gmail.com'
IMAP_PORT=993
ser= serial.Serial ('/dev/ttyACM0',9600)

while True:
    M = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
    rc, resp = M.login('[email protected]', 'Password')
    print rc, resp

    M.select()
    for msg_num in M.search("INBOX", "UNDELETED")[1][0].split():
        msg = M.fetch('1', '(BODY.PEEK[TEXT])') 
        try:
            String = msg[1][0][1][139:148]
        except TypeError:
            continue

        print String
        if String == "This is just a test...":
            ser.write('0')
        sleep(1)

Я новичок в программировании на Python, и приведенный выше код Python — это тот, который я использую для программы, которую хочу сделать. Когда я запускаю это в терминале, я получаю ответ, что я аутентифицировал свою учетную запись, а затем он отображает сообщение между символами 139 и 161, которое в примере электронной почты выглядит следующим образом:

This is just a test...

Это распечатывается в терминале. После того, как программа несколько раз проверит мою электронную почту, вылезает эта ошибка:

   Traceback (most recent call last):
     File "/home/wilson/Desktop/Best_Gmail_yet _Dont_touch.py", line 11, in <module>
       rc, resp = M.login('[email protected]', 'password')
     File "/usr/lib/python2.6/imaplib.py", line 500, in login
       raise self.error(dat[-1])
   imaplib.error: [ALERT] Web login required: http://mail.google.com/support /bin/answer.py?answer=78754 (Failure)

Есть ли у кого-нибудь какие-либо идеи, чтобы помочь, и есть ли другой способ написать в сериал, Заранее спасибо!


person W. Gonzalez    schedule 29.03.2011    source источник


Ответы (1)


Из URL-адреса сообщения об ошибке (http://mail.google.com/support/bin/answer.py?answer=78754):

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

Я предполагаю, что вы слишком часто подключаетесь к серверу, и Gmail вызывает подозрения.

Вы также, кажется, открываете несколько соединений imap, не закрывая ни одно из них. Я не знаю точно, что вы пытаетесь сделать, но я предполагаю, что есть более экономный способ, вероятно, включающий только одно соединение, которое вы поддерживаете и время от времени опрашиваете.

person senderle    schedule 29.03.2011