From 826f8723aae9c6cd52017260cda5210b9effcd19 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Sun, 3 Jun 2018 15:24:52 +0200 Subject: [PATCH] Checking in ancient code --- EmlHelper.py | 17 +++++++++++++++ ImapHelper.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ Main.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ __init__.py | 0 consolehelper.py | 39 +++++++++++++++++++++++++++++++++ 5 files changed, 168 insertions(+) create mode 100644 EmlHelper.py create mode 100644 ImapHelper.py create mode 100644 Main.py create mode 100644 __init__.py create mode 100644 consolehelper.py diff --git a/EmlHelper.py b/EmlHelper.py new file mode 100644 index 0000000..5856aa7 --- /dev/null +++ b/EmlHelper.py @@ -0,0 +1,17 @@ +''' +@author: Klaus-Uwe Mitterer +''' +import email + +class EmlHelper(object): + @staticmethod + def readFile(file_path): + f=None + try: + f=open(file_path) + except IOError as e: + print 'Unable to open file. {0}'.format(e) + msg=email.message_from_file(f) + f.close() + return msg + diff --git a/ImapHelper.py b/ImapHelper.py new file mode 100644 index 0000000..97d209f --- /dev/null +++ b/ImapHelper.py @@ -0,0 +1,56 @@ +''' +@author: Klaus-Uwe Mitterer +''' +import imaplib2 +import socket +import consolehelper + +class ImapHelper(object): + folder_ = None + mail_ = None + + def __init__(self,host,port,is_ssl,user,password,folder): + + self.folder_=folder + try: + if(is_ssl): + self.mail_=imaplib2.IMAP4_SSL(host,port) + else: + self.mail_=imaplib2.IMAP4(host,port) + if 'STARTTLS' in self.mail_.capabilities: + self.mail_.starttls() + self.mail_.login(user, password) + + except socket.error, e: + print "Error while connecting: {0}".format(e) + exit(1) + except imaplib2.IMAP4.error, e: + print "Error while connecting: {0}".format(e) + exit(1) + + def __del__(self): + if self.mail_ != None: + self.mail_.logout() + + + def addMessage(self,message): + folder=self.folder_.replace('.',"/") + try: + ret=self.mail_.append(folder, "", None, str(message)) + except socket.error, e: + print "Error while appending: {0}".format(e) + exit(1) + except imaplib2.IMAP4.error, e: + print "Error while appending: {0}".format(e) + exit(1) + + if ret[0] != "OK": + print "Error while creating message {0}".format(ret[1]) + if "Folder doesn't exist" in ret[1][0]: + if consolehelper.confirm("Folder doesn't exist. Do you want to create it?"): + self.mail_.create(folder) + self.addMessage(message) + + c = consolehelper.Colors() + c.print_success("Done") + diff --git a/Main.py b/Main.py new file mode 100644 index 0000000..c4b6a17 --- /dev/null +++ b/Main.py @@ -0,0 +1,56 @@ +''' +@author: Klaus-Uwe Mitterer +''' +from optparse import OptionParser +import EmlHelper +import ImapHelper + +def validateAction(options): + message=EmlHelper.EmlHelper.readFile(options.file) + account=ImapHelper.ImapHelper(options.server,options.port,options.ssl,options.user,options.password,options.folder) + account.addMessage(message) + +def run(): + usage = "usage: %prog [options] file" + parser = OptionParser(usage) + parser.add_option("-s", "--server", dest="server", + help="imap server", action="store",type="string") + parser.add_option("-u", "--user", + action="store", dest="user",type="string", + help="imap username") + parser.add_option("-p", "--password", + action="store", dest="password",type="string", + help="imap user password") + parser.add_option("-f", "--folder", + action="store", dest="folder",type="string", + help="imap folder") + parser.add_option( "--port", + action="store", dest="port",type="int", + help="imap port") + parser.add_option( "--ssl", + action="store_true", dest="ssl", + help="use ssl") + + (options, args) = parser.parse_args() + if len(args) == 0: + parser.error("Eml file path is required") + options.file=args[0] + if options.server is None: + parser.error("server address is required") + if options.user is None: + parser.error("user is required") + if options.password is None: + parser.error("password is required") + if options.folder is None: + parser.error("imap folder is required") + if options.ssl is None: + options.ssl=False + if options.port is None: + if options.ssl is True: + options.port=993 + else: + options.port=143 + validateAction(options) + +if __name__ == "__main__": + run() diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/consolehelper.py b/consolehelper.py new file mode 100644 index 0000000..fd7ec93 --- /dev/null +++ b/consolehelper.py @@ -0,0 +1,39 @@ +def confirm(prompt=None, resp=False): + + if prompt is None: + prompt = 'Confirm' + + if resp: + prompt = '%s [%s]|%s: ' % (prompt, 'y', 'n') + else: + prompt = '%s [%s]|%s: ' % (prompt, 'n', 'y') + + while True: + ans = raw_input(prompt) + if not ans: + return resp + if ans not in ['y', 'Y', 'n', 'N']: + print 'please enter y or n.' + continue + if ans == 'y' or ans == 'Y': + return True + if ans == 'n' or ans == 'N': + return False + +class Colors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + + def disable(self): + self.HEADER = '' + self.OKBLUE = '' + self.OKGREEN = '' + self.WARNING = '' + self.FAIL = '' + self.ENDC = '' + def print_success(self,msg): + print self.OKGREEN + msg + self.ENDC