HubobelsPython/PrintBring.py

125 lines
No EOL
3.9 KiB
Python

from imbox import Imbox
import traceback
import os
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import sys
from datetime import datetime
import logging
import json
appname = os.path.basename(sys.argv[0])
appname = appname.replace(".py", ".conf")
absFilePath = os.path.abspath(__file__)
absFilePath = absFilePath.replace(".py", ".conf")
if os.path.isfile(absFilePath) is False:
print(appname + ' scheint es nicht zu geben.')
print('Ich lege eine neue Datei ' + appname + ' an.')
passw={'mail':
{
"mail_pass": "",
"mail_user": "",
"mail_host": "",
"mail_smtp": ""
}
}
print(str(appname) + ' bitte entsprechend befüllen.')
with open(absFilePath, 'w') as fp:
json.dump(passw, fp, sort_keys=True, indent=4)
quit()
else:
with open(absFilePath) as file:
passw = json.load(file)
print(passw)
if not os.path.exists('Post'):
os.makedirs('Post')
empfänger = sys.argv
if (len(empfänger)) != 2:
print('Geben Sie bitte GENAU EINEN Empfänger als Argument an!')
exit()
absFilePath = os.path.abspath(__file__)
path, filename = os.path.split(absFilePath)
host = passw['mail']['mail_host']
username = passw['mail']['mail_user']
password = passw['mail']['mail_pass']
smtpServer = passw['mail']['mail_smtp']
smtpPort = 587
sender = username
reciever = empfänger[1]
subject = "Hallo Welt!"
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = reciever
Log_Format = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(filename = path + "/printbring.log",
filemode = "a",
format = Log_Format,
level = logging.ERROR)
logger = logging.getLogger()
mail = Imbox(host, username=username, password=password, ssl=True, ssl_context=None, starttls=False)
messages = mail.messages(unread=True)
logger.setLevel(logging.INFO)
for (uid, message) in messages:
mail.mark_seen(uid) # optional, mark message as read
bodie = message.sent_from
body = 'von: ' + str(bodie[0]['name']) + ' über: '+ str(bodie[0]['email'])
body = body + ' mit dem Betreff: ' + message.subject
body = body + '\n'
body = body + 'Datum der ursprünglichen Nachricht: ' + message.date
body = body + '\n'
now = datetime.now()
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
body = body + 'Datum der Jobverarbeitung: ' + dt_string
#print(body)
for idx, attachment in enumerate(message.attachments):
try:
name = time.time()
fn = attachment.get('filename')
root, extension = os.path.splitext(fn)
att_fn = str(name)+str(extension)
print(att_fn)
with open('Post/' + att_fn, "wb") as fp:
fp.write(attachment.get('content').read())
msg = MIMEMultipart()
msg.attach(MIMEText(body, 'plain'))
filename = att_fn
attachment = open('Post/'+filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename= %s' % att_fn)
msg.attach(part)
server = smtplib.SMTP(smtpServer, 587)
server.starttls()
server.login(username, password)
msg['Subject'] = str(fn) + ' to ' + str(name)
text = msg.as_string()
server.sendmail(username, reciever, text)
server.quit()
logger.info(msg['Subject'])
except:
print(traceback.print_exc())
logger.error(traceback.print_exc())
mail.delete(uid)
for filename in os.listdir('Post'):
os.remove('Post/'+filename)
logger.setLevel(logging.ERROR)
mail.logout()