import imaplib, email, os, json from config import server, username, pw, searchAll, searchYesterday from smtplib import SMTP_SSL, SMTP_SSL_PORT def sendEmails(text, reciever): SMTP_HOST = server SMTP_USER = username SMTP_PASS = pw # Craft the email by hand from_email = 'Maily-Sommerschein ' # or simply the email address to_emails = reciever body = text headers = f"From: {from_email}\r\n" headers += f"To: {', '.join(to_emails)}\r\n" headers += f"Subject: Autoresponse\r\n" email_message = headers + "\r\n" + body # Blank line needed between headers and body # Connect, authenticate, and send mail smtp_server = SMTP_SSL(SMTP_HOST, port=SMTP_SSL_PORT) smtp_server.set_debuglevel(1) # Show SMTP server interactions smtp_server.login(SMTP_USER, SMTP_PASS) smtp_server.sendmail(from_email, to_emails, email_message) # Disconnect smtp_server.quit() def loadKnownContacts(): f = open('contacts.json') contacts = json.load(f) return contacts def getContacts(search): # Connect to inbox imap_server = imaplib.IMAP4_SSL(host=server) imap_server.login(username, pw) imap_server.select() # Default is `INBOX` contacts = [] # Find all emails in inbox _, message_numbers_raw = imap_server.search(None, search) for message_number in message_numbers_raw[0].split(): _, msg = imap_server.fetch(message_number, '(RFC822)') # Parse the raw email message in to a convenient object message = email.message_from_bytes(msg[0][1]) contact = message['from'].lower() if contact not in contacts: contacts.append(contact) newContacts = [] for c in contacts: contact = c.split('<') if len(contact) == 2: contact = contact[1].split('>') #contact = contact[0].split('(') newContacts.append(contact[0]) #print(contact[0]) else: contact = contact[0].split('(') #print(contact[0]) newContacts.append(contact[0]) return newContacts def jsonAddContacts(contacts): if os.path.isfile('./contacts.json'): print('Deleting Contacts') os.remove('contacts.json') with open('contacts.json', 'w', encoding='utf-8') as f: json.dump(contacts, f, ensure_ascii=False, indent=4) def jsonCreateContacts(): # Connect to inbox imap_server = imaplib.IMAP4_SSL(host=server) imap_server.login(username, pw) imap_server.select() # Default is `INBOX` contacts = [] # Find all emails in inbox _, message_numbers_raw = imap_server.search(None, searchAll) for message_number in message_numbers_raw[0].split(): _, msg = imap_server.fetch(message_number, '(RFC822)') # Parse the raw email message in to a convenient object message = email.message_from_bytes(msg[0][1]) contact = message['from'].lower() if contact not in contacts: contacts.append(contact) newContacts = [] rawContacts = [] for c in contacts: rawContacts.append(c) contact = c.split('<') if len(contact) == 2: contact = contact[1].split('>') #contact = contact[0].split('(') newContacts.append(contact[0]) #print(contact[0]) else: contact = contact[0].split('(') #print(contact[0]) newContacts.append(contact[0]) if os.path.isfile('./contacts.json'): print('Deleting Contacts') os.remove('contacts.json') if os.path.isfile('./rawContacts.json'): print('Deleting Contacts') os.remove('rawContacts.json') with open('contacts.json', 'w', encoding='utf-8') as f: json.dump(newContacts, f, ensure_ascii=False, indent=4) with open('rawContacts.json', 'w', encoding='utf-8') as f: json.dump(rawContacts, f, ensure_ascii=False, indent=4) def checkFor_unkownContacts(): contacts = getContacts(searchYesterday) knownContacts = loadKnownContacts() unknownContacts = [] for c in contacts: if c not in knownContacts: # TODO: send Email #print(c) unknownContacts.append(c) return unknownContacts