问题描述
我有以下这段代码,它每十秒钟连接并检查一次新电子邮件,但是由于某种原因,它不会刷新,因此无法正常工作。
import imaplib,imaplib2
import pprint
import os
import email
import time
imap_host = 'imap.gmail.com'
imap_user = 'user'
imap_pass = 'pass'
criteria = "ALL"
def if_latest_email(email_id: str) -> bool:
with open(r'Email Bot/latest_email.txt','r+') as f:
data = f.read()
print(data)
if data == email_id:
return True
else:
f.seek(0)
f.write(email_id)
return False
imap = imaplib.IMAP4_SSL(imap_host,993)
imap.login(imap_user,imap_pass)
while 1:
imap.select('Inbox')
type,data = imap.search(None,criteria)
imap_ids = data[0]
id_list = imap_ids.split()
for num in id_list:
typ,data = imap.fetch(num,'(RFC822)')
for response_part in data:
if isinstance(response_part,tuple):
raw_email_string = response_part[1].decode('utf-8')
msg = email.message_from_string(raw_email_string)
email_id = msg['Message-ID']
print(msg['from'])
if if_latest_email(email_id):
print('No new emails.')
break
else:
print('New email:')
email_subject = msg['subject']
email_from = msg['from']
print('From : ' + email_from + '\n')
print('Subject : ' + email_subject + '\n')
break
time.sleep(60)
imap.logout()
imap.close()
我听说过imaplib的另一个版本-imaplib2添加了一个名为IDLE()的方法,该方法应该等待新的传入电子邮件,但是我有一些问题。任何想法?预先感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)