Checking in ancient code

This commit is contained in:
Kumi 2018-06-03 15:24:52 +02:00
commit 826f8723aa
5 changed files with 168 additions and 0 deletions

17
EmlHelper.py Normal file
View file

@ -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

56
ImapHelper.py Normal file
View file

@ -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")

56
Main.py Normal file
View file

@ -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()

0
__init__.py Normal file
View file

39
consolehelper.py Normal file
View file

@ -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