Ich verwende Magento 1.9.1 und beim Erstellen einer neuen Bestellung, egal ob vom Frontend oder vom Administrator, sendet das System 2 E-Mails - beide gleich!
Ich habe im Internet nach einem alten Fehler gesucht und konnte den zum Auskommentieren erwähnten Code nicht finden. Es sah auch so aus, als hätte das mit Paypal-Bestellungen zu tun, und das ist nicht der Fall.
Ich habe ALLE Erweiterungen deaktiviert und habe versucht, dasselbe Problem zu beheben, daher bin ich sicher, dass es sich nicht um ein Erweiterungsproblem handelt.
magento-1.9
orders
ce-1.9.1.0
transactional-mail
Christopher Werfer
quelle
quelle
Antworten:
Dieses Problem muss mit dem neuen Magento Email Queue-System zusammenhängen, das verwaiste Datensätze in der Empfänger-Tabelle hinterlässt. Wenn dies Ihr Problem ist, sende ich Ihnen eine Lösung.
Das neue Magento Email Queue-System verwaltet diese beiden Tabellen: core_email_queue und core_email_queue_recipients . Die erste verarbeitet die E-Mail-Nachrichten und die zweite die Empfänger dieser Nachrichten.
Die Tabelle core_email_queue wird gelöscht , wenn E-Mails in der Magento-E-Mail-Warteschlange gesendet werden. Diese Bereinigung wird von einem Cron-Tab-Job namens core_email_queue_clean_up ausgeführt , der in der Konfigurationsdatei app / code / core / Mage / Core / etc / config.xml definiert ist . Der Code, der die Bereinigung ausführt, wird in der Funktion removeSentMessages in der Klasse Mage_Core_Model_Resource_Email_Queue definiert :
Der obige Code wird einmal täglich von der Cron-Task ausgeführt.
Aber es kommt vor, dass die core_email_queue_recipients Tabelle (die, die E - Mail - Empfänger hält, und die mit der verbunden ist core_email_queue durch die Tabelle message_id Feld), nicht zusammen mit der gereinigt core_email_queue Tabelle (die, die E - Mail - Nachrichten hält), so dass verwaiste Aufzeichnungen innen diese Empfängertabelle, wenn dann Nachrichtentabelle bereinigt wird.
Das hier beschriebene Problem tritt auf, wenn die Tabelle core_email_queue (Messages) zurückgesetzt und das Feld message_id für die automatische Inkrementierung in dieser Tabelle auf 1 zurückgesetzt wird.
Da die Tabelle core_email_queue_recipients (Recipients) nicht entsprechend bereinigt wurde, werden beim Hinzufügen neuer E-Mails zur Magento-E-Mail-Warteschlange neue Datensätze in der Tabelle core_email_queue erstellt (wobei message_id wieder bei 1 beginnt) und gleichzeitig neue Datensätze erstellt in der Tabelle core_email_queue_recipients mit denselben IDs (erneut beginnend mit 1).
Das Problem ist, dass diese IDs möglicherweise bereits in der Empfängertabelle als verwaiste Datensätze vorhanden sind (aufgrund früherer E-Mail-Nachrichten). Diese neuen Nachrichten-IDs werden dann in der Tabelle core_email_queue_recipients wiederholt . Am Ende werden verschiedene E-Mail-Nachrichten durch die message_id mit den entsprechenden Empfängern verknüpft , sie werden jedoch auch fälschlicherweise mit früheren Empfängern verknüpft, denen dieselbe message_id aus früheren E-Mails zugewiesen wurde .
Wenn also nach Empfängern gesucht wird, um eine bestimmte Nachricht zu senden, können neben dem geeigneten Empfänger auch andere falsche Empfänger auftreten.
Glücklicherweise ist die Behebung dieses Problems einfach durchzuführen.
Sie müssen lediglich alle wiederholten Nachrichten-IDs in der Tabelle core_email_queue_recipients bereinigen und sicherstellen, dass beim Löschen einer Nachricht in der Tabelle core_email_queue gleichzeitig die entsprechenden Empfänger in der Tabelle core_email_queue_recipients gelöscht werden.
Der beste Weg, dies zu erreichen, besteht darin, einen Fremdschlüssel zu erstellen, der diese Datensätze verknüpft und sie in einer Kaskade löscht (Sie müssen jedoch eine Bereinigung vornehmen, bevor Sie dies tun können).
So beheben Sie das Problem:
1) Führen Sie die folgenden zwei SQL-Abfragen aus, um die Tabelle core_email_queue_recipients von verwaisten Datensätzen und IDs wiederholter Nachrichten zu bereinigen :
Die erste Abfrage löscht verwaiste Datensätze, und die zweite Abfrage löscht alte Datensätze, die nicht mehr gültig sind.
2) Erstellen Sie einen Fremdschlüssel in der Tabelle core_email_queue_recipients , um Empfängerdatensätze in der Kaskade zu löschen. Die SQL-Abfrage zum Erstellen dieses Fremdschlüssels lautet:
Bei Verwendung dieses neuen Fremdschlüssels verbleiben beim Bereinigen der Tabelle core_email_queue_recipients keine verwaisten Datensätze in der Tabelle core_email_queue , und es werden in Zukunft keine doppelten Nachrichten an falsche Empfänger gesendet.
quelle
Ich hatte das gleiche problem Für jede Bestellung erhalte ich die Kunden-E-Mail und eine separate E-Mail an meine Geschäftsadresse - beide in der Mailbox meines Geschäfts-E-Mail-Kontos.
In Magento Admin: System> Konfiguration> Verkaufs-E-Mails> Bestellen
Ich habe die E-Mail-Adresse "Send Order E-Mail Copy Method" von "Seperate E-Mail" auf "Bcc" gesetzt und sie funktioniert jetzt. Ich erhalte jetzt nur eine E-Mail pro Bestellung.
quelle
Ich hatte das gleiche problem In meinem Fall wurde das Problem durch den Quellcode des Skripts cron.sh verursacht .
Mein Hosting-Provider hat seine eigenen Versionen der Skripte cron.sh und cron.php für den Magento-Cron-Job verwendet.
Als ich zum Starten des Magento-Cron-Jobs vom cron.sh- Skript zum cron.php- Skript wechselte, wurde die neue Bestell -eMail nur einmal verschickt, mein Problem war gelöst.
Möglicherweise hat Ihr Problem etwas mit dem Code des Skripts cron.sh oder cron.php zu tun .
quelle