Checking in ancient code
This commit is contained in:
commit
826f8723aa
5 changed files with 168 additions and 0 deletions
17
EmlHelper.py
Normal file
17
EmlHelper.py
Normal 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
56
ImapHelper.py
Normal 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
56
Main.py
Normal 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
0
__init__.py
Normal file
39
consolehelper.py
Normal file
39
consolehelper.py
Normal 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
|
Loading…
Reference in a new issue