import imaplib
import email
import subprocess
import time
EMAIL = "monitor@outlook.com"
PASSWORD = "password"
IMAP_SERVER = "outlook.office365.com"
# От кого должно прийти письмо
TRIGGER_SENDER = "sender@example.com"
# Кому должно быть адресовано письмо
TRIGGER_RECIPIENT = "target@example.com"
# Что запускать
PROGRAM = r"C:\Scripts\start.bat"
while True:
try:
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(EMAIL, PASSWORD)
mail.select("INBOX")
status, messages = mail.search(
None,
f'(UNSEEN FROM "{TRIGGER_SENDER}")'
)
for msg_id in messages[0].split():
_, msg_data = mail.fetch(msg_id, "(RFC822)")
for part in msg_data:
if not isinstance(part, tuple):
continue
msg = email.message_from_bytes(part[1])
recipient = msg.get("To", "").lower()
if TRIGGER_RECIPIENT.lower() in recipient:
print("Получено подходящее письмо.")
subprocess.Popen(PROGRAM)
# Помечаем как прочитанное
mail.store(msg_id, "+FLAGS", "\\Seen")
mail.logout()
except Exception as e:
print("Ошибка:", e)
time.sleep(15)