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('user@gmail.com', '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('user@gmail.com', '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)
有没有人能帮帮我,或者有没有其他方法可以写入串口?提前谢谢大家!
1 个回答
3
根据错误信息的链接(http://mail.google.com/support/bin/answer.py?answer=78754):
确保你的邮件客户端没有设置得太频繁去检查新邮件。如果你的邮件客户端每10分钟检查新邮件的次数超过一次,它可能会反复请求你的用户名和密码。
我猜你可能是连接服务器的频率太高了,这让Gmail有点怀疑。
另外,你似乎在打开多个IMAP连接,但没有关闭它们。我不太清楚你具体想做什么,但我猜有更简单的方法,可能只需要保持一个连接,然后偶尔去检查一下就可以了。