Мониторинг электронной почты в бесконечное время l oop. Есть ли недостатки / лучшие идеи? - PullRequest
0 голосов
/ 21 июня 2020

Я пишу короткий сценарий, чтобы контролировать свой почтовый ящик и получать уведомления при каждом новом входящем письме. Пока я использую бесконечное время l oop, например:

msg_id_check = None
while True:
    result, data = mail.fetch(mail.select('INBOX')[1][0], "(RFC822)")  # mail is an imaplib object
    msg_str = email.message_from_bytes(data[0][1])
    msg_id = get_email_id(msg_str.get('Received'))
    if msg_id == msg_id_check:  # Don't keep notifying me of the same email
        continue
    FROM = msg_str.get('From')
    SUBJECT = msg_str.get('Subject')
    BODY = get_body(msg_str).decode()
    print(f"Subject: {SUBJECT}\nFrom: {FROM}\nBody: {BODY}")
    msg_id_check = msg_id

Сначала я подумал, что не могу этого сделать, потому что я слышал, как мой компьютер застревает в бесконечном l oop, и это не похоже на то, что ему это нравится, но когда я попробовал этот код, я не услышал никаких шумов от своего компьютера, поэтому мне интересно, является ли этот процесс удобным для процессора или есть лучший способ получать уведомления при каждом входящем письме?

PS Прямо сейчас я просто распечатываю новые письма на экране, но в моем проекте мне нужно что-то делать с этими письмами, и я не хочу потерять ни одно из этих писем .

1 Ответ

0 голосов
/ 21 июня 2020

Когда вы отправляете запрос, ваша программа не go дальше без awnser (может быть тайм-аут), поэтому у вас есть «буфер» в вашем while l oop, но вам не нужно знать каждую секунду, если вы у новой почты вы должны поставить time.sleep(60) в конце l oop, чтобы отправлять менее бесполезные запросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...