Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python使用IMAP侦听传入的电子邮件_Python_Email_Imap_Imaplib - Fatal编程技术网

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()的方法,该方法假定等待新的传入电子邮件,但我有一些问题。有什么想法吗?提前谢谢