0

私は小さなArduinoプロジェクトに取り組んでおり、GMailで新しい電子メールを受け取るたびに、フラグが付いたサーボをアクティブにしています。Gmail にログインし、新しい電子メールがあるかどうかを確認してから、x 秒ごとに再度確認したいと考えています。

私が発見したのは、最初の接続はうまくいくということですが、その後、AUTH モードでは LOGIN を使用できず、 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 回使用し、その後ループ内で別のコマンドを使用するか、確認後にログアウトしてから毎回ログインし直すことができます。

考え?提案?

4

1 に答える 1

0

while ループから「conn.login(user,pwd)」行を取り出す必要があります。while ループの前の行として配置すると、正常に動作するはずです。

于 2011-09-16T10:31:50.850 に答える