PrestaShop-Modul, das den Versand von Mail::Send() auf einen externen Versanddienst umleitet.
- Nutzt den Hook
actionEmailSendBefore, um den nativen Versand vor dem Senden abzufangen. - Versendet E-Mails ueber Microsoft Graph
sendMailoder SMTP mit STARTTLS. - Liest die PrestaShop-Mailtemplates (
.html/.txt) und ersetzt Template-Variablen. - Fallback auf den nativen PrestaShop-Mailversand, falls Graph fehlschlaegt.
- Modulordner
internautengraphnachmodules/kopieren. - Modul im Back Office installieren.
- In der Modulkonfiguration den Versanddienst (
Mail transport) waehlen. - Je nach Versanddienst die passenden Werte setzen:
- Microsoft Graph API:
- Tenant ID
- Client ID
- Client Secret
- Sender mailbox (Office 365 Benutzer)
- SMTP with STARTTLS:
- SMTP host
- SMTP port (typisch 587)
- SMTP username
- SMTP password
- SMTP sender email (optional zusaetzlich SMTP sender name)
- Microsoft Graph API:
- Modul aktivieren und eine erste Testmail aus PrestaShop ausloesen.
- Azure Portal oeffnen und zu
Microsoft Entra ID>App registrations>New registrationwechseln. - Einen Namen vergeben, zum Beispiel
Prestashop Internauten Graph. Accounts in this organizational directory onlyauswaehlen.- Registrierung speichern.
- In der Uebersicht die Werte notieren:
Application (client) ID(deutsch meistAnwendungs-ID (Client))Directory (tenant) ID(deutsch meistVerzeichnis-ID (Mandant)oderMandanten-ID)
- In der App zu
Certificates & secretswechseln. - Unter
Client secretsaufNew client secretklicken. - Beschreibung und Gueltigkeit waehlen, danach speichern.
- Den Secret-
Valuesofort kopieren und sicher speichern (wird spaeter nicht mehr voll angezeigt).
- In der App zu
API permissionswechseln. Add a permission>Microsoft Graph>Application permissionswaehlen.- Berechtigung
Mail.Sendhinzufuegen. Grant admin consentfuer den Tenant ausfuehren.- Pruefen, dass der Status
Granted for <Tenant>angezeigt wird.
- Eine bestehende Benutzer-Mailbox festlegen, zum Beispiel
shop@example.com. - Sicherstellen, dass die Mailbox eine Exchange Online Lizenz hat und senden darf.
- Falls Conditional Access aktiv ist, sicherstellen, dass App-only Zugriff auf Graph fuer diese Anwendung nicht blockiert wird.
- Die Mailbox-Adresse exakt notieren. Diese Adresse wird in der Modulkonfiguration als
Sender mailboxverwendet.
- In PrestaShop
Module>internautengraph>Konfigurierenoeffnen. Enable Graph sendingaufYessetzen.- Felder fuellen:
Tenant ID=Directory (tenant) ID(deutsch:Verzeichnis-ID (Mandant)oderMandanten-ID)Client ID=Application (client) ID(deutsch:Anwendungs-ID (Client))Client Secret= Secret ValueSender mailbox= Exchange Online Mailbox (z. B.shop@example.com)
- Speichern.
- In PrestaShop eine Aktion mit E-Mail-Versand ausloesen (z. B. Passwort vergessen oder Kontaktformular).
- In Exchange Online
Sent Itemsder Absender-Mailbox pruefen. - Falls keine Mail ankommt, zuerst App-Berechtigungen, Admin-Consent und Secret-Gueltigkeit kontrollieren.
- Falls Graph fehlschlaegt, verwendet das Modul automatisch den nativen PrestaShop-Mailversand als Fallback.
- Das Modul unterstuetzt zwei Transportmodi:
Microsoft Graph APIundSMTP with STARTTLS. - Fuer Graph verwendet das Modul den OAuth2 Client-Credentials-Flow.
- Der Versand wird ueber den Hook
actionEmailSendBeforeumgeleitet (kein aktiver Klassen-Override erforderlich). - Bei aktivierter Transport-Konfiguration wird zuerst der gewaehlte Transport versucht.
- Falls der gewaehlte Transport nicht verfuegbar ist oder eine Anfrage fehlschlaegt, wird auf den Standardversand von PrestaShop zurueckgefallen.
- In der Modulkonfiguration gibt es ein eigenes Feld
Test recipient emailmit ButtonSend test email, um den aktuell gewaehlten Transport direkt zu pruefen. - Bei Transport-Fehlern werden Details im Modul-Backend angezeigt (
Last custom transport error). - Optionaler Schalter
Debug template variables: schreibt bei Bedarf Variable-Keys und nicht ersetzte Platzhalter in die PrestaShop-Logs (zum Troubleshooting, standardmaessig aus). - Debug-Logs enthalten eine Request-ID (
rid=...), damit zusammengehoerige Eintraege pro Versandversuch leicht gefiltert werden koennen.
ln -s /internauten/InternautenGraph/internautengraph /var/www/html/modules/internautengraph
chown -h www-data:www-data /var/www/html/modules/internautengraphDieses Projekt steht unter der MIT License. Siehe LICENSE.
Copyright by die.internauten.ch GmbH