file2mail/file2mail.py

70 lines
1.8 KiB
Python

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import config
import fstools
import logging
import mail
import os
import report
import signal
import time
CYCLE_TIME = 60
SLEEP_TIME = .5
try:
from config import APP_NAME as ROOT_LOGGER_NAME
except ImportError:
ROOT_LOGGER_NAME = 'root'
logger = logging.getLogger(ROOT_LOGGER_NAME)
report.add_handler_stdout(logger, config.LOG_LEVEL)
if config.DEBUG:
report.add_handler_socket(logger, host=config.LOG_HOSTNAME)
class GracefulKiller:
kill_now = False
def __init__(self):
signal.signal(signal.SIGINT, self.exit_gracefully)
signal.signal(signal.SIGTERM, self.exit_gracefully)
def exit_gracefully(self, signum, frame):
self.kill_now = True
def file2mail():
# Scan for files to send
for filename in fstools.filelist(config.TARGET_FOLDER):
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)
if __name__ == '__main__':
killer = GracefulKiller()
i = 0
while not killer.kill_now:
time.sleep(.5)
if i >= CYCLE_TIME / SLEEP_TIME:
file2mail()
i = 0
else:
i += 1