私は小さな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 回使用し、その後ループ内で別のコマンドを使用するか、確認後にログアウトしてから毎回ログインし直すことができます。
考え?提案?