imap2pdf/imap2pdf.py

75 lines
1.9 KiB
Python
Raw Normal View History

2023-03-01 08:50:43 +01:00
#!/usr/bin/env python3
import sys
import string
import random
import os
import imap_tools
import time
import requests
imap_server = ""
imap_user = ""
imap_pass = ""
imap_inbox = "INBOX"
out = "/mnt/thieme_smart_import/"
logfile = "/var/log/fax.log"
def generate_hash():
letters = string.ascii_letters
letters = letters + string.digits
random_string = ""
for x in range(0, 4):
random_string = random_string + random.choice(letters)
return random_string
def log(command):
f = open(logfile, 'a')
f.write(time.ctime() + ' ' + command + '\n')
f.close()
def main():
try:
imap = imap_tools.MailBox(imap_server).login(imap_user, imap_pass)
except:
sys.exit(0)
for message in imap.fetch():
to = message.to[0].split("@")[0]
if to == 'fax01' or to == 'fax02' or to == 'fax03':
id = '12345'
log("Fax for " + id)
elif to == 'fax04':
id = '12346'
log("Fax for " + id)
else:
imap.move(message.uid, "Unbekannt")
log(" > Unknown recipient")
continue
filename = '1^' + id + '^' + generate_hash() + '.pdf'
for attachment in message.attachments:
with open(os.path.join(out, filename), 'wb') as f:
f.write(attachment.payload)
log(" > Save attachment to " + filename)
# Mattermost
headers = {'Content-Type': 'application/json',}
if id == '12345':
values = '{ "channel": "fax-010203", "text": "Neues Fax in ID 12345 emfangen" }'
elif id == '12346':
values = '{ "channel": "fax-02", "text": "Neues Fax in ID 12346 emfangen" }'
response = requests.post('http://chat:8065/hooks/APIKEY', headers=headers, data=values)
imap.move(message.uid, "Archiv")
imap.logout()
if __name__ == "__main__":
main()