python使用IMAP侦听传入的电子邮件
我有以下代码,每十秒钟连接并检查一次新的电子邮件,但由于某些原因它无法工作,无法刷新python使用IMAP侦听传入的电子邮件,python,email,imap,imaplib,Python,Email,Imap,Imaplib,我有以下代码,每十秒钟连接并检查一次新的电子邮件,但由于某些原因它无法工作,无法刷新 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) -&
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()的方法,该方法假定等待新的传入电子邮件,但我有一些问题。有什么想法吗?提前谢谢