E-mail z potwierdzeniem nowego zamówienia nie jest wysyłany

100

Zaktualizowałem moją witrynę do wersji 1.9.1 i teraz moi klienci nie otrzymują wiadomości e-mail z potwierdzeniem zamówienia.

Próbowałem wysłać za pośrednictwem panelu administracyjnego, ale nic się nie dzieje, nie otrzymano również wiadomości e-mail z aktualizacją.

użytkownik16826
źródło

Odpowiedzi:

96
  1. Począwszy od Magento 1.9.1, e-maile nie są wysyłane bezpośrednio podczas realizacji transakcji, ale są w kolejce.
  2. Kolejka jest przetwarzana przez cronjob Magento - upewnij się, że została skonfigurowana i działa poprawnie.
  3. Rozszerzenie AOE_Scheduler może pomóc ci w potwierdzeniu, że twój cronjob Magento został poprawnie skonfigurowany i działa.
Kristof w Fooman
źródło
6
Upewnij się, że cron.shdziała! Właśnie spędziliśmy cały dzień na debugowaniu tego, aby odkryć, że cron został źle skonfigurowany.
forsvunnet
2
jak się dowiedzieć, czy cron.php działa, czy nie?
Teja Bhagavan Kollepara,
2
Możesz śledzić dzienniki wewnątrz / var / log / cron
Beto Castillo
Mam problem z e-mailem dotyczącym zamówienia w Magento 2. Cron również działa, ale poczta nie wysyła. Większość zadań cron jest pominiętych w tabeli bazy danych. Jak mogę to rozwiązać?
Magecode
@Magecode Proponuję najpierw wyszukać określone pytania dotyczące Magento 2. Jeśli nie ma nikogo, możesz dodać własne pytanie ze szczegółami na temat tego, co dotychczas znalazłeś / wykluczyłeś.
Kristof at Fooman
29

Istnieją 2 metody wysyłania wiadomości e-mail z naszego sklepu Magento 1.

  1. Używając crona
  2. Unikając crona

Jeśli chcesz uniknąć crona:

Otwórz plik order.php pod adresem

app / code / core / Mage / Sales / Model / Order.php

Linia # 1356,1450,

zmiana

//$mailer->setQueue($emailQueue)->send(); 

do:

$mailer-> send();

W app/design/frontend/base/default/template/checkout/success.phtml: dodaj następujący wiersz Najlepsza strona sukcesu w bezpośrednim wysyłaniu poczty

$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
$order->loadByIncrementId($incrementId);
try{ 
    $order->sendNewOrderEmail();
} catch (Exception $ex) { 
    echo "Email Not Sent..."; 
}
$customer = Mage::getSingleton('customer/session')->getCustomer();
$email = $customer->getEmail();
//End Email Sending
Teja Bhagavan Kollepara
źródło
działa idealnie, czy to konieczne, aby dodać kod w Success.phtml, ponieważ wydaje się, że działa dobrze
Suneth Kalhara 16.10.17
3
Cześć Z przyjemnością to słucham. Nie trzeba dodawać żadnego kodu, ponieważ poczta transakcyjna natychmiast przejdzie na adres e-mail.
Teja Bhagavan Kollepara
1
Nigdy nie zmieniaj (ani nie zastępuj, jeśli o to chodzi) kodu dostawcy - co się stanie po aktualizacji?
Bachi
20

usunąłem następujący kod kolejki pocztowej z Template.php, a następnie zacząłem otrzymywać wiadomości e-mail po złożeniu zamówienia przez klienta lub po kliknięciu opcji Wyślij wiadomość e-mail z panelu administracyjnego zakładka „Sprzedaż / Zamówienia”.

Magento ustawił e-mail z zamówieniem, aby był wysyłany zgodnie z harmonogramem zamiast natychmiastowego e-maila ... prawdopodobnie z powodu wydajności? (Nie wiem dlaczego, jestem nowy w Magento) ... jednak zamierzam ponownie wprowadzić ten kod Template.php i znajdź sposób na ustawienie i uruchomienie zadania harmonogramu, które będzie uruchamiane co 5 minut ...

Template.php znajduje się w => /app/code/core/Mage/Core/Model/Email/Template.php

   if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) { 

    /** @var $emailQueue Mage_Core_Model_Email_Queue */
        $emailQueue = $this->getQueue();
        $emailQueue->setMessageBody($text);
        $emailQueue->setMessageParameters(array(
                'subject'           => $subject,
                'return_path_email' => $returnPathEmail,
                'is_plain'          => $this->isPlain(),
                'from_email'        => $this->getSenderEmail(),
                'from_name'         => $this->getSenderName(),
                'reply_to'          => $this->getMail()->getReplyTo(),
                'return_to'         => $this->getMail()->getReturnPath(),
            ))
            ->addRecipients($emails, $names, Mage_Core_Model_Email_Queue::EMAIL_TYPE_TO)
            ->addRecipients($this->_bccEmails, array(), Mage_Core_Model_Email_Queue::EMAIL_TYPE_BCC);
        $emailQueue->addMessageToQueue();

        return true;
    }
Helmey Hussain
źródło
Ta metoda rozwiązała problem, ale subskrypcja biuletynu nie działa. Powrót do starego szablonu. Php rozwiązał problem subskrypcji listu informacyjnego.
balajisoundar
14

Istnieją dwa następujące rozwiązania:

Rozwiązanie-01: Używanie crona

System> Konfiguracja> Zaawansowane> System> Cron

Domyślne ustawienia to:

Przede wszystkim Magento 1.9+ polega całkowicie na zadaniach cron do wysyłania e-maili transakcyjnych. Jeśli nie miałeś wcześniej poprawnie skonfigurowanych zadań crona, będziesz musiał to zrobić teraz.

Przede wszystkim upewnij się, że skonfigurowałeś zadania crona w Magento admin pod

System> Konfiguracja> Zaawansowane> System> Cron

Domyślne ustawienia to:

Generuj harmonogramy co 15 harmonogramów z wyprzedzeniem dla 20 pominiętych, jeśli nie zostaną uruchomione w ciągu 15 czyszczenia historii co 10 sukcesów Historia życia 60 Historia awarii życia 600

Są ludzie, którzy sugerują, że te ustawienia powinny zostać zmienione, ale ponieważ wydaje się, że nie mogą się zgodzić na najlepszą kombinację, wolę pozostawić taką, jaka jest.

Następnie musisz przejść do panelu sterowania hostingu i skonfigurować zadania CRON. W cPanel jest pod Zaawansowane> Zadania Cron. Ustaw je tak, aby uruchamiały się co pięć minut i użyj tego polecenia:

php -f /home/username/public_html/cron.php

Sprawdź, czy powyższa ścieżka jest poprawna i czy plik cron.php faktycznie znajduje się w katalogu głównym instalacji Magento (jeśli właśnie zaktualizowałeś, powinien być). Zmień nazwę użytkownika na prawidłowe konto.

Teraz początkowo popełniłem błąd, postępując zgodnie z radami programistów z xtento.com, którzy mówią, aby używać ciągu poleceń wget: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php

Rozwiązanie-02: Unikaj crona

Transakcyjne wiadomości e-mail będą wysyłane natychmiast.

//app/code/core/Mage/Sales/Model/Order.php Line#1356,1450 
  //$mailer->setQueue($emailQueue)->send(); Change To 

          $mailer->send();

app/design/frontend/base/default/template/checkout/success.phtml
    //add following line Top success page for sending mail direct
    // Start Send Emai Here......
    $order = Mage::getModel('sales/order');
    $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
    $order->loadByIncrementId($incrementId);

    try{ $order->sendNewOrderEmail();} 
    catch (Exception $ex) { echo "Email Not Sent..."; }
    $customer = Mage::getSingleton('customer/session')->getCustomer();
    $email = $customer->getEmail();//End Email Sending
matinict
źródło
10

W Magento 1.9 wszystkie e-maile będą umieszczane w kolejce, a następnie wysyłane za pośrednictwem Crona.

Informacja o wersji Magento 1.9

Jeśli chcesz, aby e-maile transakcyjne były wysyłane przez Cron, możesz ustawić crona z Systemu > Konfiguracja > System w zakładce Cron LUB utwórz crona w Cpanel i skieruj go do pliku cron.sh lub cron.php znajdującego się w głównym katalogu Magento.

Ajay Bisht
źródło
10

Wystarczy zainstalować rozszerzenie „SMTP Pro Email”: http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html

Podaj swoje niestandardowe dane SMTP i gotowe.


Zrozumienie tego zajęło mi dwa pełne dni. Nie są potrzebne zadania Cron, chociaż jeśli chcesz, aby zadania CRON działały i nie chcesz wykonywać powyższych czynności, możesz wykonać następujące czynności:

Edytuj plik cron.php w katalogu głównym Magento

Po:

$isShellDisabled = (stripos(PHP_OS, win’) === false) ? $isShellDisabled : true;

dodaj ten wiersz kodu:

$isShellDisabled = true;

Skonfiguruj zadanie Cron

Na panelu C otwórz sekcję Zadania Cron
Utwórz zadanie cron, które uruchamia następujące polecenie co 15 minut:

php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
Jagoman
źródło
Należy pamiętać, że w przypadku SMTP Pro konfiguracja ta musi być wykonana dla Magento 1.9.1 i nowszych: System -> Konfiguracja -> SMTP Pro -> Konfiguracja kolejki -> Zmiana użycia kolejki z Domyślnej na Nigdy.
Shrenik,
8

W Magento 1.9.1.0 Magento dodało nową funkcję: przechowują e-mail z zamówieniem w core_email_queuetabeli, aby wysłać e-mail z zamówieniem. Musimy ustawić cron.phpserwer w

cron.phpPlik ustawić core_email_queue_send_allw cron tabeli harmonogramu. Kiedy crone wykonuje metodę „send” wywołaną z Mage_Core_Model_Email_Queue. Wysyłają pocztę do klienta.

Tak więc powyższa poprawka działa bez żadnych zmian w głównym pliku.

Ankita Pancholi
źródło
6

Po prostu wykonaj konfigurację crona na swoim serwerze zgodnie z poniższym poleceniem, a wtedy zaczniesz otrzymywać maile sprzedażowe.

php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php

Użyj wspólnych ustawień jako „*****”

Musisz wymienić YOUR_USER_NAME i Path_to_cron.php na swój.

Akhil Gupta
źródło
6

Używając n98-magerun , po prostu uruchamiam:

n98-magerun sys:cron:run core_email_queue_send_all

Lub zmierzyć czas, jeśli nie chcesz go uruchamiać przez cały czas:

watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all

To wysyła wszystkie e-maile w kolejce co 10 sekund.

Timon de Groot
źródło
6

dla serwera chrzestnego użyj następującego kodu podczas konfigurowania cronjob:

*   *   *   *   *   /usr/local/bin/php -q /home/steelwa/public_html/project_name/cron.php

To będzie działać co minutę.wprowadź opis zdjęcia tutaj

alok
źródło
5

jeśli jest to TYLKO wiadomość e-mail z zamówieniem, nie jest wysyłana, to dlatego, że Magento ustawia w kolejce tylko wiadomości e-mail z zamówieniem i zapisuje je, aby wysłać je partiami. Jeśli nie masz konfiguracji Heartbeat Cron ... to nigdy nie opuszczą kolejki Magento.

Widzisz, jak wychodzą inne e-maile Magento, ponieważ są one przekazywane bezpośrednio z Magento do twojego demona mailera. Te kolejki Magento (jak e-mail zamówienia) nie są nawet przekazywane demonowi mailera, dopóki nie uruchomi się Hearbeat Cron.

Aby zmusić ich do wyjścia ... przejdź do http://yourmagentodomain.com/cron.php i odświeżaj tę stronę co pięć minut, a zobaczysz, że wiadomości w kolejce zamówień zaczynają wychodzić. Cron Heartbeat powinien to zrobić za Ciebie. Aha, a kiedy przejdziesz do tego pliku cron.php, strona powinna być pusta, więc nie przejmuj się ... zadziała.

Aidan
źródło
5

Miałem ten sam problem i dowiedziałem się, że dotyczy to rozszerzenia. Załączniki e-mail Fooman zostały zaktualizowane do wersji v0.10.4. Wersje poniżej v0.10.3 nie będą działać z Magento 1.9.

loeffel
źródło
5

Postępowałem zgodnie z bazą wiedzy, aby ją uruchomić: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info

W części „Lokalizowanie e-maili transakcyjnych”, po wykonaniu poprzednich instrukcji, kopiowanie do / en_UK w końcu otrzymało wiadomości e-mail w drodze (w tym te, które wcześniej nie zostały wysłane), mieliśmy również problem z tym, że strona potwierdzenia zamówienia nie była wyświetlana klientom na ukończenie. Zostało to również naprawione.

Na przykład dla ustawień regionalnych en_GB należy skopiować pliki znajdujące się w:

app / locale / en_US / template / email

do lokalizacji:

app / locale / en_GB / template / email

Uncle_Paul
źródło
2
Witamy w Magento SE! Czy możesz uszczegółowić swoją odpowiedź (oferując przykłady kodu itp.)?
benmarks
3

Jeśli twój system pocztowy (smtp, zend_mail) działa dobrze; wyłączenie mailQueue może rozwiązać problem.

/app/code/core/Mage/Core/Model/Email/Template.php

Zmień linię 407

if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {

do

if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {
użytkownik20329
źródło
5
psuje to funkcjonalność formularza kontaktowego.
Zoya,
9
Nie edytuj rdzenia
Kevin Schroeder
1
Nie dostarczaj rozwiązań wymagających zmian w CORE. Klasy podstawowej nie wolno nigdy zmieniać.
Ahsan Horani
2

Jeśli masz rozszerzenie SMTPpro, spróbuj je wyłączyć. I sprawdź jeszcze raz. Wszystkie e-maile działają poprawnie i wystarczy tylko poprawnie skonfigurować.

Deweloper Webile
źródło
0

Lepszym sposobem jest zrobienie kopii aplikacji / kodu / rdzenia / Mage / rdzenia / modelu / e-maila / szablonu / Mailer.php

Do aplikacji w folderze lokalnym / code / local / Mage / Core / Model / Email / Template / Mailer.php

Następnie skomentuj ten wiersz w linii 76

->setQueue($this->getQueue())

To koniec. Nie trzeba modyfikować szablonu Success.phtml. :RE

jehzlau
źródło