0

每次我在 GMail 中收到一封新电子邮件时,我一直在做一个小型 Arduino 项目来激活带有标志的伺服。我想登录 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() 一次,然后在循环中使用另一个命令,或者我可以在检查后注销,然后每次重新登录。

想法?建议?

4

1 回答 1

0

您需要将“conn.login(user,pwd)”行从 while 循环中取出。将它作为 while 循环之前的行应该可以正常工作。

于 2011-09-16T10:31:50.850 回答