89 lines
2.1 KiB
Python
89 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
#-*- coding: utf-8 -*-
|
|
|
|
import argparse
|
|
import sys
|
|
import MySQLdb
|
|
import configparser
|
|
import email
|
|
from email.utils import parseaddr
|
|
|
|
|
|
def DBConfig(configfile):
|
|
config = configparser.ConfigParser()
|
|
config.read(configfile)
|
|
|
|
d_dbconfig = {
|
|
'host' : config.get("maildb", "hostname"),
|
|
'user' : config.get("maildb", "username"),
|
|
'passwd' : config.get("maildb", "password"),
|
|
'db' : config.get("maildb", "database")
|
|
}
|
|
|
|
return d_dbconfig
|
|
|
|
|
|
def ConnectMysqlDB(dbconfig):
|
|
conn = MySQLdb.connect(**dbconfig)
|
|
|
|
return conn, conn.cursor()
|
|
|
|
|
|
def CloseDB(conn):
|
|
conn.close()
|
|
|
|
|
|
def CreateDB(conn, cursor):
|
|
try:
|
|
cursor.execute('''CREATE TABLE IF NOT EXISTS mail (id int(10) PRIMARY KEY AUTO_INCREMENT, sender varchar(50), recipient varchar(50), date datetime NOT NULL DEFAULT current_timestamp(), content mediumtext);''')
|
|
conn.commit()
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
|
|
def InsertMail(conn, cursor, sender, recipient, content):
|
|
try:
|
|
cursor.execute("INSERT INTO mail (sender, recipient, content) values ('%s','%s','%s')" % (sender, recipient, content))
|
|
conn.commit()
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
|
|
def ParseMail(input_data):
|
|
content = ""
|
|
for line in input_data:
|
|
if line != "":
|
|
content += line
|
|
|
|
msgobj = email.message_from_string(content)
|
|
sender = email.utils.parseaddr(msgobj['From'])[1]
|
|
recipient = email.utils.parseaddr(msgobj['To'])[1]
|
|
|
|
return sender, recipient, content
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("-c", "--config", help="config file path", default="maildb.cfg")
|
|
parser.add_argument("sender", help="sender")
|
|
parser.add_argument("recipient", help="recipient")
|
|
args = parser.parse_args()
|
|
|
|
d_dbconfig = DBConfig(args.config)
|
|
|
|
maildata = ParseMail(sys.stdin)
|
|
sender = maildata[0]
|
|
recipient = maildata[1]
|
|
mailcontent = maildata[2]
|
|
|
|
conn, cursor = ConnectMysqlDB(d_dbconfig)
|
|
CreateDB(conn, cursor)
|
|
|
|
InsertMail(conn, cursor, sender, recipient, mailcontent)
|
|
|
|
CloseDB(conn)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|