drop email support
This commit is contained in:
@@ -1,11 +1,4 @@
|
|||||||
HA_WEBHOOK_URL=
|
HA_WEBHOOK_URL=
|
||||||
|
|
||||||
SMTP_HOST=
|
|
||||||
SMTP_PORT=587
|
|
||||||
SMTP_FROM=
|
|
||||||
SMTP_TO=
|
|
||||||
SMTP_USER=
|
|
||||||
SMTP_PASSWORD=
|
|
||||||
|
|
||||||
DB_PATH=/data/huizenbot.db
|
DB_PATH=/data/huizenbot.db
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,6 @@ MICHELLE_WERK_9292 = "vlaardingen/"+MICHELLE_WERK_POSTCODE
|
|||||||
|
|
||||||
HA_WEBHOOK_URL = os.environ.get("HA_WEBHOOK_URL", "")
|
HA_WEBHOOK_URL = os.environ.get("HA_WEBHOOK_URL", "")
|
||||||
|
|
||||||
SMTP_HOST = os.environ.get("SMTP_HOST", "")
|
|
||||||
SMTP_PORT = int(os.environ.get("SMTP_PORT", "587"))
|
|
||||||
SMTP_FROM = os.environ.get("SMTP_FROM", "")
|
|
||||||
SMTP_TO = os.environ.get("SMTP_TO", "")
|
|
||||||
SMTP_USER = os.environ.get("SMTP_USER", "")
|
|
||||||
|
|
||||||
USER_AGENT = "Huizenbot/1.0 (+mark@kalsbeek.dev) persoonlijk gebruik"
|
USER_AGENT = "Huizenbot/1.0 (+mark@kalsbeek.dev) persoonlijk gebruik"
|
||||||
|
|
||||||
DB_PATH = os.environ.get("DB_PATH", "/data/huizenbot.db")
|
DB_PATH = os.environ.get("DB_PATH", "/data/huizenbot.db")
|
||||||
|
|||||||
@@ -6,13 +6,10 @@ import hashlib
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import smtplib
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import time
|
import time
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
from email.mime.multipart import MIMEMultipart
|
|
||||||
from email.mime.text import MIMEText
|
|
||||||
from typing import Callable, Any
|
from typing import Callable, Any
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
@@ -285,46 +282,6 @@ def notify_ha(listing: RawListing, travel: dict[str,int]) -> None:
|
|||||||
log.info("HA notificatie verstuurd voor %s", listing.adres)
|
log.info("HA notificatie verstuurd voor %s", listing.adres)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("HA webhook fout: %s", e)
|
log.error("HA webhook fout: %s", e)
|
||||||
notify_email(listing, travel) # fallback
|
|
||||||
|
|
||||||
|
|
||||||
def notify_email(listing: RawListing, travel: dict[str,int]) -> None:
|
|
||||||
"""Stuur HTML email als fallback."""
|
|
||||||
if not config.SMTP_HOST:
|
|
||||||
return
|
|
||||||
|
|
||||||
subject = f"Nieuwe woning: {listing.adres}, {listing.stad} — €{listing.prijs:,}"
|
|
||||||
|
|
||||||
html = f"""
|
|
||||||
<html><body>
|
|
||||||
<h2>{listing.adres}, {listing.stad}</h2>
|
|
||||||
<p><strong>Prijs:</strong> €{listing.prijs:,}</p>
|
|
||||||
<p><strong>Status:</strong> {listing.status}</p>
|
|
||||||
<p><strong>Fiets P1:</strong> {travel.get('fiets_mark')} min
|
|
||||||
<strong>OV P1:</strong> {travel.get('ov_mark')} min</p>
|
|
||||||
<p><strong>Fiets P2:</strong> {travel.get('fiets_michelle')} min
|
|
||||||
<strong>OV P2:</strong> {travel.get('ov_michelle')} min</p>
|
|
||||||
{"<img src='" + listing.hero_image_url + "' width='600'>" if listing.hero_image_url else ""}
|
|
||||||
<p><a href="{listing.url}">Bekijk listing</a></p>
|
|
||||||
</body></html>
|
|
||||||
"""
|
|
||||||
|
|
||||||
msg = MIMEMultipart("alternative")
|
|
||||||
msg["Subject"] = subject
|
|
||||||
msg["From"] = config.SMTP_FROM
|
|
||||||
msg["To"] = config.SMTP_TO
|
|
||||||
msg.attach(MIMEText(html, "html"))
|
|
||||||
|
|
||||||
try:
|
|
||||||
with smtplib.SMTP(config.SMTP_HOST, config.SMTP_PORT) as s:
|
|
||||||
if config.SMTP_USER:
|
|
||||||
s.starttls()
|
|
||||||
s.login(config.SMTP_USER, os.environ.get("SMTP_PASSWORD", ""))
|
|
||||||
s.send_message(msg)
|
|
||||||
log.info("Email verstuurd voor %s", listing.adres)
|
|
||||||
except Exception as e:
|
|
||||||
log.error("Email fout: %s", e)
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Orchestration
|
# Orchestration
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
import sys
|
|
||||||
sys.path.insert(0, "../src")
|
|
||||||
|
|
||||||
from huizenbot import notify_email, RawListing
|
|
||||||
|
|
||||||
TEST_LISTING = RawListing(
|
|
||||||
url="https://example.com/test-woning",
|
|
||||||
source_makelaar="test",
|
|
||||||
adres="Teststraat 1",
|
|
||||||
stad="Delft",
|
|
||||||
postcode="2613AA",
|
|
||||||
prijs=350000,
|
|
||||||
hero_image_url=None,
|
|
||||||
)
|
|
||||||
|
|
||||||
TEST_TRAVEL = {
|
|
||||||
"fiets_mark": 20,
|
|
||||||
"fiets_michelle": 35,
|
|
||||||
"ov_mark": 30,
|
|
||||||
"ov_michelle": 45,
|
|
||||||
}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
print("=== Email ===")
|
|
||||||
notify_email(TEST_LISTING, TEST_TRAVEL)
|
|
||||||
print(" verstuurd (check je inbox)")
|
|
||||||
Reference in New Issue
Block a user