From d086a483138e88fa098307a5b2180c9eb1b9060d Mon Sep 17 00:00:00 2001 From: Tomas Musil Date: Thu, 12 Apr 2012 19:52:34 +0200 Subject: [PATCH] zaklad mailoveho rozhrani --- robot.py | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100755 robot.py diff --git a/robot.py b/robot.py new file mode 100755 index 0000000..2cbc1d5 --- /dev/null +++ b/robot.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python + +"""Mailove rozhrani pro sadu kryptoanalytickych nastroju.""" + +import os +import sys +import re +import smtplib +import email +from email.mime.text import MIMEText +from time import asctime +import pickle + +from ocesavac import ocesat +from spolecne import ABECEDA + +class settings: + pass + +settings = pickle.load(open('./robot_settings')) +os.chdir(settings.path) + +def posli_mail(komu, predmet, text, loguj=None): + msg = MIMEText(text) + msg['Subject'] = predmet + msg['From'] = settings.name + " <" + settings.mail + ">" + msg['To'] = komu + smtplib.SMTP('localhost').sendmail(settings.mail, komu, msg.as_string()) + if loguj: + soubor = open(loguj, 'w') + soubor.write(msg.as_string()) + soubor.close() + +# Cteni mailu +mail = email.message_from_file(sys.stdin) +predmet, _, opsny = mail['Subject'].strip().upper().partition(' ') +odesilatel = mail['From'] +if predmet != settings.subject: + sys.exit() +if 'L' in opsny: + mail = pickle.load(open('./msg_last.tmp')) + m1 = re.match(r".*\<(.*)\>.*", mail['From']) + m2 = re.match(r".*\<(.*)\>.*", odesilatel) + if m1: + f1 = m1.group(1) + else: + f1 = mail['From'] + if m2: + f2 = m2.group(1) + else: + f2 = odesilatel + if (f1 != f2): + posli_mail(odesilatel, "Omluva", "Omlouvam se," + " ale Vase zprava uz bohuzel neni na serveru ulozena.\n") + sys.exit() + +if mail.is_multipart(): + telo = mail.get_payload(0).get_payload().strip() +else: + telo = mail.get_payload().strip() + +if len(ocesat(telo, False)) < 2: + posli_mail(odesilatel, "Omluva", "Omlouvam se," + " ale Vase zprava je prilis kratka.\n") + sys.exit() +zprava = telo.upper() + +# TODO zpracovat zpravu a odeslat vysledek +#pridat "\nS pozdravem\nVas Robot" + +posli_mail(odesilatel, + "Analyza Vasi zpravy", + "\n".join(analyza), + './robot_last.tmp') + +f = open('./msg_last.tmp', 'w') +pickle.dump(mail, f) +f.close() + +f = open('./robot.log', 'a') +m = re.match(r".*\<(.*)\>.*", odesilatel) +if m: + odesilatel2 = m.group(1) +else: + odesilatel2 = odesilatel +f.write(asctime() + " " + odesilatel2 + " " + opsny + "\n") +f.close() -- 2.4.2