Der Versand aller Bestellmails ist zentral in includes/functions.php implementiert und wird synchron innerhalb der jeweiligen HTTP-Requests ausgeführt.
sendEmail(...)createOrder(...) und confirmOrderByToken(...)getSystemSettings() aus data/settings.jsonconfig.phpHinweis:
mail().Die folgenden Parameter steuern den Mailfluss:
| Schlüssel | Quelle | Wirkung |
|---|---|---|
order_recipient_email |
Admin-Einstellungen (data/settings.json) |
Empfänger für interne Bestellmail |
order_confirmation_required |
Admin-Einstellungen | Erzwingt Bestätigungsmail vor interner Weiterleitung |
order_confirmation_expiry_days |
Admin-Einstellungen | Gültigkeit des Bestätigungslinks |
attach_order_pdf_to_admin_email |
Admin-Einstellungen | Hängt PDF an interne Bestellmail an |
FROM_EMAIL, FROM_NAME |
config.php |
Absender/Anzeigename für alle ausgehenden Mails |
SITE_URL |
config.php |
Basis für Bestätigungslink in Mails |
sendOrderConfirmationRequestEmail($order)createOrder(...), wenn order_confirmation_required = trueorder.customer_emailorder-confirm.php?token=...sendOrderCreatedCustomerEmail($order)createOrder(...), wenn order_confirmation_required = falseorder.customer_emailsendOrderConfirmedCustomerEmail($order)confirmOrderByToken(...)order.customer_emailsendConfirmedOrderAdminNotification($order)createOrder(...), wenn order_confirmation_required = falseconfirmOrderByToken(...), wenn vorher pendinggetOrderRecipientEmail() (normalisiert/validiert)bestellung-<order-id>.pdf bei aktivem attach_order_pdf_to_admin_emailrenderOrderPdf($order) (intern prepareOrderForDocument() + generateOrderPdf()); enthält keine Bearbeitungs-/Lieferstatus-Felder aus der Admin-Oberflächeadmin/order-pdf.php?id=<order-id> (Schaltfläche „Bestellung drucken“ auf admin/order.php)createOrder(...) speichert Bestellung mit confirmation_status = pending.order-confirm.php auf und startet confirmOrderByToken(...).confirmation_status wird auf confirmed gesetzt,createOrder(...) speichert Bestellung mit confirmation_status = not_required und confirmed_at.pending) wechseln nach Frist auf expired.refreshOrderState(...) berechnet und über expirePendingOrders() beim Aufruf von admin/index.php, admin/orders.php und order-confirm.php fortgeschrieben.expired gibt es keine zusätzliche Mail.mail($to, $subject, $message, $headers).multipart/mixed mit Base64-kodierten Attachments.From: <FROM_NAME> <FROM_EMAIL>Reply-To: FROM_EMAILX-Mailer: PHP/<version>buildAbsoluteUrl(...) erzeugt:
SITE_URL wird direkt verwendet,SITE_URL wird aus Request-Kontext (HTTP_HOST, HTTPS) eine absolute URL gebaut.sendEmail(...) werden nur teilweise ausgewertet:
admin_notified_at gesetzt.admin_notified_at leer.mail().