file2mail/file2mail.py
2023-06-08 19:12:50 +02:00

63 lines
2.4 KiB
Python

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import config
import fstools
import json
import logging
import mail
import os
import report
import time
LOCK_FILE = os.path.join(config.TARGET_FOLDER, "lock")
PID = os.getpid()
logger = logging.getLogger('root')
report.stdoutLoggingConfigure(log_name_lvl=[('root', config.LOG_LEVEL), ])
if __name__ == "__main__":
while True:
# Check if LOCK_FILE EXISTS
if not os.path.exists(LOCK_FILE):
# Create LOCK_FILE
with open(LOCK_FILE, 'w') as fh:
fh.write(str(PID))
logger.debug("Creating lock-file %s with PID %d", LOCK_FILE, PID)
# Read LOCK_FILE content
with open(LOCK_FILE, 'r') as fh:
lf_pid = json.loads(fh.read())
# Check if LOCK_FILE has my PID
if lf_pid == PID:
# Scan for files to send
for filename in fstools.filelist(config.TARGET_FOLDER):
# Exclude LOCK_FILE
if filename != LOCK_FILE:
logger.info("Found %s to send via E-Mail to %s.", filename, config.SEND_TO)
# Send File as E-Mail
try:
mail.send_mail(
config.SEND_FROM,
config.SEND_TO,
"Gesanntes Dokument - %s" % os.path.basename(filename),
"Hier ist das gescannte Dokument vom Scanner in Buchen:",
files=[filename],
server=config.SMTP_SERVER,
username=config.SMTP_USER,
password=config.SMTP_PASSWORD
)
except Exception:
logger.exception("Exception while sending an E-Mail")
else:
# Remove file
logger.debug("Removing file %s", filename)
os.remove(filename)
# Remove LOCK_FILE
logger.debug("Removing lock-file %s", LOCK_FILE)
os.remove(LOCK_FILE)
else:
logger.warning("LOCK_FILE has PID %d and this proces %d. No action!", lf_pid, PID)
else:
logger.warning("LOCK_FILE %s already exists. No action!", LOCK_FILE)
time.sleep(60)