Zum Inhalt

E-Mail-Versand (Communication Flow)

Der Versand von Kommunikationsvorgängen erfolgt in mehreren Schritten.

Ablauf

1. Event-Auslösung

Ein Ereignis (z. B. Bestellabschluss) triggert einen CommunicationEventType. Beispiele:

  • ORDER_PLACED – Bestellung aufgegeben
  • REGISTRATION – Benutzerregistrierung
  • USERADDRESS_CREATED – Neue Adresse angelegt

2. Dispatcher

Der CustomDispatcher (apps.communication.utils) erbt von oscar.apps.customer.utils.Dispatcher und überschreibt:

  • send_custom() – Sendet Kommunikationsvorgänge mit angepasstem Empfängerkreis
  • send_event_type() – Ermittelt zuständige OUs und sendet Kopien

3. OU-Routing

OrganizationUnit.send_all() wird aufgerufen und:

  1. Ermittelt per get_responsible_ous() alle zuständigen OUs
  2. Sendet pro OU die E-Mail an Mitglieder und E-Mail-Empfänger
  3. Dispatcht optionale API-Requests (ou.dispatch_api_requests())

4. E-Mail-Erstellung

OrganizationUnit.get_email() erstellt ein EmailMessage-Objekt mit:

  • Empfängern aus get_email_recipients() (Mitglieder + OU-weite Empfänger)
  • Betreff und Body aus den Message-Templates des Event-Typs
  • Optionalen Anhängen aus get_attachments()

Wichtige Dateien

Datei Funktion
apps/communication/utils.py CustomDispatcher, send_custom(), send_event_type()
user/models.py OrganizationUnit mit send_all(), send(), get_email()
apps/communication/models.py CommunicationEventType, EmailRecipient
apps/checkout/mixins.py handle_successful_order()send_custom_emails()