Kunden bekommen ihre Bestellbestätigungen problemlos, aber ich habe die E-Mail Neue Bestellung nicht ein einziges Mal bekommen, und im Spam-Ordner liegt sie auch nicht
Die Admin-Benachrichtigung ist die Domain deines Shops, die an die eigene Domain deines Shops mailt. WooCommerce verschickt sie als orders@yourstore.com an einen Empfänger auf yourstore.com, über PHP auf dem Webserver, ohne DKIM-Signatur und von einer IP, die dein SPF-Eintrag nicht autorisiert. Eine unauthentifizierte Nachricht, die sich als interner Absender ausgibt, wird weit härter behandelt als dieselbe Nachricht an eine fremde Domain, und manche Anbieter halten sie am Gateway fest, statt sie in den Spam-Ordner einzusortieren, deshalb findest du sie nirgendwo. Die Kundenpost schrammt gerade so durch, die Admin-Post nicht.
Die Lösung
Setz einen authentifizierten SMTP-Versanddienst vor wp_mail(), schließ die Domain-Verifizierung beim Anbieter ab, veröffentliche die DKIM-Selektor-Einträge und ergänze seinen include in deinem einen SPF-TXT-Eintrag. Als Notlösung, solange du das einrichtest, änderst du das Feld Empfänger unter WooCommerce > Einstellungen > E-Mails > Neue Bestellung auf eine Adresse einer anderen Domain, damit du wenigstens siehst, dass Bestellungen reinkommen. Danach gibst du eine echte Testbestellung an eine Test-Adresse von Unspam auf, prüfst, dass die d=-Domain im DKIM deine Shop-Domain ist, und stellst den Empfänger zurück.
Gmail-Kunden bekommen alles. Outlook- und Hotmail-Kunden bekommen gar nichts, und ich sehe nie einen Bounce
Weil PHP die Nachricht an einen lokalen Mailserver übergibt und WooCommerces Protokoll nur festhält, dass die E-Mail erfolgreich an das Mailsystem übergeben wurde, steht in deinem Protokoll Sent, und es gibt nirgends einen Bounce zu lesen.
Die Lösung
Verlass den PHP-Mailweg komplett. Leite wp_mail() über einen authentifizierten SMTP-Anbieter, schließ die Domain-Verifizierung ab, damit die Nachricht eine DKIM-Signatur auf deiner Shop-Domain trägt, und ergänze den SPF-include des Anbieters. Das Zweite, was dir der Anbieter bringt, ist ein Bounce- und Unterdrückungsprotokoll, damit stille Verluste nicht länger unsichtbar sind. Lass danach einen Inbox-Placement-Test laufen und bestätige, dass die Nachricht wirklich in einem Outlook-Test-Postfach ankommt und nicht nur in einem von Gmail.
Passwort-Reset-Mails kommen nie an, also geben Kunden, die ihr Passwort vergessen haben, einfach auf, und ich verliere den Verkauf
Passwort zurücksetzen ist eine der Benachrichtigungen unter WooCommerce > Einstellungen > E-Mails, lässt sich also wie jede andere abschalten, und sie läuft denselben unauthentifizierten Weg wie alles andere. Sie ist zugleich die schlimmste, die man verlieren kann, denn sie ist die einzige E-Mail, auf die der Kunde aktiv wartet, und es gibt keine Bestellung in deinem Admin, die dir den Fehlschlag verraten würde. Eine abgeschaltete Benachrichtigung, ein fehlender Empfänger und eine weggefilterte Nachricht sehen vom Shop aus alle gleich aus.
Die Lösung
Öffne WooCommerce > Status > Protokolle und filtere auf die Quelle transactional-emails. Disabled heißt, die Benachrichtigung ist unter WooCommerce > Einstellungen > E-Mails > Passwort zurücksetzen ausgeschaltet, Skipped heißt, eine Voraussetzung wie ein Empfänger fehlte, Failed heißt, der Maildienst hat einen Fehler zurückgegeben, und Sent heißt, WooCommerce hat sie übergeben und sie wurde weiter hinten weggefiltert. Steht gar nichts im Protokoll, schau nach, wo der Reset angefordert wurde: WooCommerce weist darauf hin, dass Passwort-Reset-Mails von WordPress und andere WordPress-Admin-Mails in diesem Protokoll möglicherweise nicht auftauchen, und verweist dich stattdessen auf die Protokolle deines SMTP-Anbieters. Repariere zuerst den Weg mit einem SMTP-Versanddienst, der für deine Domain signiert, und teste dann erneut, indem du für ein Konto, dessen E-Mail-Adresse eine Test-Adresse von Unspam ist, einen Reset anforderst.
Ich habe ein SMTP-Plugin installiert, wie es jeder Ratgeber empfiehlt, und die E-Mails landen weiter im Spam
SMTP hat das Versandproblem gelöst, nicht das Identitätsproblem. Der Anbieter relayt deine Post jetzt von einer angesehenen IP unter seinem eigenen Return-Path, SPF besteht also gegen die Domain des Anbieters. Solange du die Domain-Verifizierung nicht abschließt, ist die Nachricht mit der Domain des Anbieters DKIM-signiert und nicht mit deiner. In deinem From-Header steht weiterhin yourstore.com, nichts richtet sich daran aus, und DMARC scheitert genau wie vorher, nur von besserer Infrastruktur aus.
Die Lösung
Verifiziere im Dashboard des Anbieters die Domain und nicht nur eine einzelne Absenderadresse, und veröffentliche jeden DKIM-Eintrag, den er ausgibt. Schick eine echte Bestell-E-Mail an eine Test-Adresse und lies die d=-Domain im DKIM: Steht dort weiterhin die Domain des Anbieters, ist die Verifizierung nicht fertig. Halte einen einzigen SPF-TXT-Eintrag, in dem der include des Anbieters ergänzt ist, zum Beispiel v=spf1 include:_spf.google.com include:sendgrid.net ~all, statt einen zweiten SPF-Eintrag zu veröffentlichen, denn zwei machen einander ungültig.
Bestell-E-Mails kommen Stunden zu spät an, manchmal erst am nächsten Morgen, und der Checkout kroch schon vorher
Das ist die Warteschlange für verzögerte E-Mails. WooCommerce kann transaktionale E-Mails aus dem Checkout-Request auslagern, damit der Kunde nicht auf den Mailserver wartet: Das ist die Funktion Deferred emails (Verzögerte E-Mails) unter WooCommerce > Einstellungen > Erweitert > Funktionen, standardmäßig aus, und per Code lässt sie sich zusätzlich mit dem Filter woocommerce_defer_transactional_emails erzwingen. Die Warteschlange läuft auf dem Action Scheduler, und WooCommerce dokumentiert, dass der Action Scheduler auf WP-Cron aufsetzt, das wiederum am Traffic der Seite hängt. Ein Shop mit ruhiger Nacht hat keinen Besucher, der die Warteschlange antreibt, also wartet der Beleg auf den nächsten.
Die Lösung
Öffne WooCommerce > Status > Geplante Aktionen und such nach überfälligen Aktionen; ein Stapel davon, der älter als ein Tag ist, bestätigt es. WooCommerces eigene Empfehlung ist, einen eigenen serverseitigen Cronjob einzurichten, der WP-Cron unabhängig ausführt und die Abhängigkeit vom Traffic umgeht, was das Timing für jeden geplanten Job im Shop repariert und nicht nur für E-Mails. War der Checkout schon vor der Verzögerung langsam, liegt es meist daran, dass der Mail-Hop innerhalb des Requests passiert, und ein Wechsel zu einem SMTP-Anbieter nimmt dir auch das.