diff --git a/app/core/utils.py b/app/core/utils.py index 09763bb..d7349f3 100644 --- a/app/core/utils.py +++ b/app/core/utils.py @@ -106,33 +106,3 @@ END:VCALENDAR""" except Exception as e: logging.getLogger("caldav").error(f"CalDAV VTODO 생성 실패: {e}") return None - - -# ─── SMTP 헬퍼 ─── - - -def send_smtp_email( - host: str, - port: int, - username: str, - password: str, - subject: str, - body: str, - to_addr: str | None = None, -): - """Synology MailPlus SMTP로 이메일 발송""" - import smtplib - from email.mime.text import MIMEText - - to_addr = to_addr or username - msg = MIMEText(body, "plain", "utf-8") - msg["Subject"] = subject - msg["From"] = username - msg["To"] = to_addr - - try: - with smtplib.SMTP_SSL(host, port, timeout=30) as server: - server.login(username, password) - server.send_message(msg) - except Exception as e: - logging.getLogger("smtp").error(f"SMTP 발송 실패: {e}") diff --git a/app/workers/daily_digest.py b/app/workers/daily_digest.py index edd31e0..be68abd 100644 --- a/app/workers/daily_digest.py +++ b/app/workers/daily_digest.py @@ -1,10 +1,10 @@ -"""일일 다이제스트 워커 — PostgreSQL/CalDAV 쿼리 → Markdown + SMTP +"""일일 다이제스트 워커 — PostgreSQL/CalDAV 쿼리 → Markdown 생성 v1 scripts/pkm_daily_digest.py에서 포팅. DEVONthink/OmniFocus → PostgreSQL/CalDAV 쿼리로 전환. +SMTP 발송은 2026-06-10 제거 (한 번도 전달 성공한 적 없는 기능 — 폐기 결정). """ -import os from datetime import datetime, timezone from zoneinfo import ZoneInfo from pathlib import Path @@ -13,7 +13,7 @@ from sqlalchemy import func, select, text from core.config import settings from core.database import async_session -from core.utils import send_smtp_email, setup_logger +from core.utils import setup_logger from models.document import Document from models.queue import ProcessingQueue @@ -133,16 +133,4 @@ async def run(): if old.stat().st_mtime < cutoff: old.rename(archive_dir / old.name) - # ─── SMTP 발송 ─── - smtp_host = os.getenv("MAILPLUS_HOST", "") - smtp_port = int(os.getenv("MAILPLUS_SMTP_PORT", "465")) - smtp_user = os.getenv("MAILPLUS_USER", "") - smtp_pass = os.getenv("MAILPLUS_PASS", "") - if smtp_host and smtp_user: - send_smtp_email( - smtp_host, smtp_port, smtp_user, smtp_pass, - f"PKM 다이제스트 — {date_display}", - markdown, - ) - logger.info(f"다이제스트 생성 완료: {digest_path}") diff --git a/app/workers/law_monitor.py b/app/workers/law_monitor.py index 5212592..a520429 100644 --- a/app/workers/law_monitor.py +++ b/app/workers/law_monitor.py @@ -15,7 +15,7 @@ from sqlalchemy import select from core.config import settings from core.database import async_session -from core.utils import create_caldav_todo, escape_ical_text, file_hash, send_smtp_email, setup_logger +from core.utils import create_caldav_todo, file_hash, setup_logger from models.automation import AutomationState from models.document import Document from models.queue import enqueue_stage @@ -337,8 +337,7 @@ def _safe_name(name: str) -> str: def _send_notifications(law_name: str, proclamation_date: str, revision_type: str): - """CalDAV + SMTP 알림""" - # CalDAV + """CalDAV 할일 알림 (SMTP 발송은 2026-06-10 폐기 — CalDAV 가 단일 알림 채널)""" caldav_url = os.getenv("CALDAV_URL", "") caldav_user = os.getenv("CALDAV_USER", "") caldav_pass = os.getenv("CALDAV_PASS", "") @@ -349,15 +348,3 @@ def _send_notifications(law_name: str, proclamation_date: str, revision_type: st description=f"공포일자: {proclamation_date}, 개정구분: {revision_type}", due_days=7, ) - - # SMTP - smtp_host = os.getenv("MAILPLUS_HOST", "") - smtp_port = int(os.getenv("MAILPLUS_SMTP_PORT", "465")) - smtp_user = os.getenv("MAILPLUS_USER", "") - smtp_pass = os.getenv("MAILPLUS_PASS", "") - if smtp_host and smtp_user: - send_smtp_email( - smtp_host, smtp_port, smtp_user, smtp_pass, - subject=f"[법령 변경] {law_name} ({revision_type})", - body=f"법령명: {law_name}\n공포일자: {proclamation_date}\n개정구분: {revision_type}", - ) diff --git a/app/workers/mailplus_archive.py b/app/workers/mailplus_archive.py index 7bbfd4d..ac0948d 100644 --- a/app/workers/mailplus_archive.py +++ b/app/workers/mailplus_archive.py @@ -17,7 +17,7 @@ from sqlalchemy import select from core.config import settings from core.database import async_session -from core.utils import file_hash, send_smtp_email, setup_logger +from core.utils import file_hash, setup_logger from models.automation import AutomationState from models.document import Document from models.queue import enqueue_stage @@ -201,11 +201,4 @@ async def run(): await session.commit() - # SMTP 알림 - smtp_host = os.getenv("MAILPLUS_HOST", "") - smtp_port = int(os.getenv("MAILPLUS_SMTP_PORT", "465")) - if archived and smtp_host: - body = f"이메일 {len(archived)}건 수집 완료:\n\n" + "\n".join(f"- {s}" for s in archived) - send_smtp_email(smtp_host, smtp_port, user, password, "PKM 이메일 수집 알림", body) - logger.info(f"이메일 {len(archived)}건 수집 완료 (max_uid={max_uid})")