incomming mail processing

This commit is contained in:
Olaf
2026-09-30 11:53:12 +02:00
parent b89d12769c
commit 0055cc197e
14 changed files with 656 additions and 1 deletions
+22 -1
View File
@@ -1,8 +1,10 @@
## Copyright © 2026 Olaf Kolkman
## SPDX-License-Identifier: GPL-3.0-or-later
from contextlib import asynccontextmanager
from fastapi import FastAPI, Request
import logging
from threading import Event, Thread
from uuid import uuid4
from fastapi.responses import HTMLResponse
from fastapi.responses import RedirectResponse
@@ -20,12 +22,31 @@ from backend.app.api.setup import has_administrator
from backend.app.api.user_config import router as user_config_router
from backend.app.core.config import settings, validate_configuration
from backend.app.database import AVATARS_DIR
from backend.app.services.inbound_email_service import run_imap_polling
from backend.app.services.link_service import get_public_profile
logging.basicConfig(level=getattr(logging, settings.log_level, logging.INFO))
validate_configuration(settings)
app = FastAPI(title='LinkLog API', version=settings.version)
@asynccontextmanager
async def lifespan(_: FastAPI):
stop_event = Event()
worker = Thread(
target=run_imap_polling,
args=(stop_event, logging.getLogger('backend.app.services.inbound_email_service')),
name='linklog-imap-poller',
daemon=True,
)
worker.start()
try:
yield
finally:
stop_event.set()
worker.join(timeout=2)
app = FastAPI(title='LinkLog API', version=settings.version, lifespan=lifespan)
@app.middleware('http')