furry/docs/email_system.md

3.9 KiB

E-Mail-System Dokumentation

Übersicht

Das E-Mail-System des Fursuit Shops versendet automatisch Benachrichtigungen an Kunden und Administratoren bei verschiedenen Shop-Ereignissen. Das System ist mehrsprachig (DE/EN) und verwendet responsive HTML-Templates mit Text-Alternativen.

Konfiguration

E-Mail-Einstellungen

Die E-Mail-Konfiguration erfolgt über Umgebungsvariablen in der .env-Datei:

EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-specific-password
DEFAULT_FROM_EMAIL=Fursuit Shop <noreply@fursuitshop.com>

Admin-Benachrichtigungen

Administratoren werden in settings.py konfiguriert:

ADMINS = [
    ('Shop Admin', 'admin@fursuitshop.com'),
]

Lagerbestand-Schwellenwert

LOW_STOCK_THRESHOLD = 5  # Benachrichtigung bei ≤ 5 Artikeln

E-Mail-Typen

1. Kundenbenachrichtigungen

Bestellbestätigung

  • Gesendet nach erfolgreicher Zahlung
  • Enthält Bestelldetails, Produkte und Preise
  • Template: order_confirmation.html/txt

Status-Updates

  • Gesendet bei Statusänderungen der Bestellung
  • Kann Fortschrittsbilder und Beschreibungen enthalten
  • Template: order_status_update.html/txt

Versandbestätigung

  • Gesendet wenn Bestellung versendet wurde
  • Enthält Tracking-Nummer und Versanddetails
  • Template: shipping_confirmation.html/txt

2. Admin-Benachrichtigungen

Neue Bestellung

  • Bei jeder neuen Bestellung
  • Spezielle Markierung für Fursuit-Bestellungen
  • Template: admin_notification.html/txt

Zahlungsfehler

  • Bei fehlgeschlagenen Zahlungen
  • Enthält detaillierte Fehlerinformationen
  • Template: admin_notification.html/txt

Custom Design

  • Bei Bestellungen mit Custom Designs
  • Enthält Design-Dateien und Notizen
  • Template: admin_notification.html/txt

Niedriger Lagerbestand

  • Bei Unterschreitung des Schwellenwerts
  • Enthält Produktdetails und aktuellen Bestand
  • Template: low_stock_notification.html/txt

Signal-Handler

Das System verwendet Django-Signals für automatische Benachrichtigungen:

Order-Signals

@receiver(post_save, sender=Order)
def handle_order_notifications(sender, instance, created, **kwargs):
    # Sendet Benachrichtigungen bei neuen Bestellungen und Statusänderungen

Payment-Signals

@receiver(post_save, sender=PaymentError)
def handle_payment_error(sender, instance, created, **kwargs):
    # Benachrichtigt Admins über Zahlungsfehler

Product-Signals

@receiver(pre_save, sender=Product)
def check_stock_level(sender, instance, **kwargs):
    # Überprüft Lagerbestand und sendet Warnungen

E-Mail-Templates

Alle E-Mail-Templates:

  • Sind vollständig responsive
  • Unterstützen HTML und Text-Alternativen
  • Sind mehrsprachig (DE/EN)
  • Verwenden einheitliches Branding

Template-Struktur

shop/templates/shop/emails/
├── order_confirmation.html
├── order_confirmation.txt
├── order_status_update.html
├── order_status_update.txt
├── shipping_confirmation.html
├── shipping_confirmation.txt
├── admin_notification.html
├── admin_notification.txt
├── low_stock_notification.html
└── low_stock_notification.txt

Sicherheit

  • TLS-Verschlüsselung für E-Mail-Versand
  • Keine sensiblen Daten in E-Mails
  • Sichere Links zu Admin-Bereich
  • App-spezifische Passwörter für SMTP

Fehlerbehandlung

  • Robuste Exception-Handling
  • Logging von Versandfehlern
  • Vermeidung von Doppel-Benachrichtigungen
  • Fallback auf Text-Version bei HTML-Problemen

Wartung

Neue E-Mail-Typen hinzufügen

  1. Templates erstellen (HTML und Text)
  2. E-Mail-Funktion in emails.py hinzufügen
  3. Signal-Handler in signals.py registrieren
  4. Übersetzungen in .po-Dateien hinzufügen

Template-Anpassung

  • CSS-Styles in Template-Header
  • Einheitliche Farbcodes und Abstände
  • Bootstrap-kompatible Klassen
  • Responsive Breakpoints