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 json from random import * def conf(): 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_folder": "" }, 'Telegram': { "Chat_ID": "", "TOKEN": "" } } 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) return passw passw = conf() absender = ['Alberti', 'Feco', 'Schreinerei Groh', 'Ruesselsheim', 'Wettinerstraße', 'Bestellung_Nr.', 'Rapport vom:' , 'Datenblatt zu ', 'Zeichnung Nr.', 'DWG-Format', 'Fa. Nogly', 'Siemens', 'Thyssen Elevators' , 'TÜV', 'der Sachverständige schreibt:', 'Protokoll vom:', 'Jour-Fix Nr.', 'MS-Teams', 'Anfrage' , 'IG1-2022-', 'HI1-2022-', 'IK-2022'] 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() 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 mail = Imbox(host, username=username, password=password, ssl=True, ssl_context=None, starttls=False) messages = mail.messages(unread=True) 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: y = (randint(0, len(absender))) fn_att = (absender[y]) name = time.time() fn = attachment.get('filename') root, extension = os.path.splitext(fn) att_fn = str(name) + str(extension) att_fn = fn_att + att_fn 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() except: print(traceback.print_exc()) mail.delete(uid) for filename in os.listdir('Post'): print(filename) os.remove('Post/'+filename) mail.logout()