Korzystam z Magento 1.9.1 i podczas tworzenia nowego zamówienia, czy to z interfejsu użytkownika, czy z administratora, system wysyła 2 e-maile - oba te same!
Zajrzałem do sieci i znalazłem błąd, który był stary i nie mogłem znaleźć wspomnianego kodu do skomentowania, wyglądało to tak, jakby miało to związek z zamówieniami Paypal i tak nie jest.
Wyłączyłem WSZYSTKIE rozszerzenia i próbowałem i nadal mam ten sam problem, więc jestem pewien, że to nie problem z rozszerzeniem.
magento-1.9
orders
ce-1.9.1.0
transactional-mail
Christopher Thrower
źródło
źródło
Odpowiedzi:
Ten problem musi być związany z nowym systemem kolejki e-mail Magento, który pozostawia osierocone rekordy w tabeli adresatów. Jeśli to jest twój problem, przesyłam Ci poprawkę.
Nowy system kolejki e-mail Magento zarządza tymi dwiema tabelami: core_email_queue i core_email_queue_recipients . Pierwszy obsługuje wiadomości e-mail, a drugi adresaci tych wiadomości.
Core_email_queue tabeli oczyszczony jak e-maile na Magento Email kolejki są wysyłane. To czyszczenie jest wykonywane przez zadanie karty cron o nazwie core_email_queue_clean_up , które jest zdefiniowane w pliku konfiguracyjnym app / code / core / Mage / Core / etc / config.xm l. Kod, który wykonuje czyszczenie jest określona na removeSentMessages funkcjonowania w Mage_Core_Model_Resource_Email_Queue klasy:
Powyższy kod jest wykonywany raz dziennie przez zadanie cron.
Ale zdarza się, że tabela core_email_queue_recipients (ta, która przechowuje adresatów e-mail, i która jest połączona z tabelą core_email_queue przez pole message_id ), nie jest czyszczona razem z tabelą core_email_queue (ta, która przechowuje wiadomości e-mail), pozostawiając w sobie sieroce rekordy do tej tabeli odbiorców, kiedy tablica wiadomości zostanie wyczyszczona.
Opisany tutaj problem powstaje, gdy tabela core_email_queue (Wiadomości) zostanie zresetowana, a pole auto - przyrostu message_id w tej tabeli zostanie ponownie uruchomione na 1.
Ponieważ tabela core_email_queue_recipients (Odbiorcy) nie została odpowiednio wyczyszczona, po dodaniu nowych wiadomości e-mail do kolejki e-mail Magento, nowe rekordy są tworzone w tabeli core_email_queue (z identyfikatorem wiadomości zaczynającym się od 1), a jednocześnie tworzone są nowe rekordy w tabeli core_email_queue_recipients z tymi samymi identyfikatorami (zaczynając od 1).
Problem polega na tym, że te identyfikatory mogą już istnieć w tabeli Odbiorcy jako rekordy osierocone (z powodu poprzednich wiadomości e-mail). Te nowe identyfikatory wiadomości są następnie powtarzane w tabeli core_email_queue_recipients . W końcu różne wiadomości e-mail są połączone z odpowiadającymi im adresatami przez id_wiadomości , ale są również błędnie powiązane z poprzednimi odbiorcami, którym przypisano ten sam id_danych z poprzednich wiadomości e-mail.
Tak więc, gdy odbiorcy są przeszukiwani, aby wysłać daną wiadomość, oprócz odpowiedniego odbiorcy, mogą pojawić się inni niewłaściwi odbiorcy.
Na szczęście naprawa tego problemu jest łatwa do wykonania.
Wystarczy wyczyścić wszystkie powtarzające się identyfikatory wiadomości w tabeli core_email_queue_recipients i upewnić się, że po usunięciu wiadomości w tabeli core_email_queue , jednocześnie odpowiadający jej odbiorcy zostaną usunięci w tabeli core_email_queue_recipients .
Najlepszym sposobem na osiągnięcie tego jest utworzenie klucza obcego, który łączy te rekordy i usuwa je kaskadowo (ale musisz to zrobić, zanim to zrobisz).
Oto procedura rozwiązania problemu:
1) Wykonaj następujące dwa zapytania SQL, aby wyczyścić tabelę core_email_queue_recipients z rekordów osieroconych i identyfikatorów powtórzonych wiadomości:
Pierwsze zapytanie usuwa osierocone rekordy, a drugie usuwa stare rekordy, które nie są już ważne.
2) Utwórz klucz obcy w tabeli core_email_queue_recipients, aby usunąć rekordy odbiorców w kaskadzie. Zapytanie SQL służące do utworzenia tego klucza obcego to:
Dzięki zastosowaniu tego nowego klucza obcego nie zostaną pozostawione żadne osierocone rekordy w tabeli core_email_queue_recipients podczas czyszczenia tabeli core_email_queue_reue , aw przyszłości nie będą wysyłane zduplikowane wiadomości do niewłaściwych odbiorców.
źródło
Miałem ten sam problem. Do każdego zamówienia dostawałem e-mail klienta i osobny e-mail na adres mojego sklepu - oba do skrzynki pocztowej mojego konta e-mail.
W Magento Admin: System> Konfiguracja> Sprzedaż e-maili> Zamówienie
Ustawiłem e-mail „Send Order E-Mail Copy Method” z „Seperate E-Mail” na „Bcc” i to działa teraz. Teraz otrzymuję tylko jeden e-mail na zamówienie.
źródło
Miałem ten sam problem. W moim przypadku problem został spowodowany przez kod źródłowy skryptu cron.sh.
Mój dostawca hostingu użył własnych wersji skryptów cron.sh i cron.php dla zadania cron Magento.
Kiedy zmieniłem skrypt cron.sh na skrypt cron.php w celu uruchomienia Magento-Cron-Job, nowa wiadomość e-mail z zamówieniem została wysłana tylko raz, mój problem został rozwiązany.
Być może twój problem ma coś wspólnego z kodem skryptu cron.sh lub cron.php .
źródło