Conferma e-mail nuovo ordine non inviata


Risposte:


96
  1. A partire da Magento 1.9.1 le e-mail non vengono inviate direttamente durante il checkout ma vengono invece messe in coda.
  2. La coda viene elaborata tramite il tuo cronjob Magento: assicurati che sia stato impostato e funzioni correttamente.
  3. L'estensione AOE_Scheduler può aiutarti a confermare che il tuo cronjob Magento è stato configurato correttamente ed è in esecuzione.

6
Assicurati che cron.shstia funzionando! Abbiamo appena trascorso un giorno intero a eseguire il debug di questo solo per scoprire che cron non era configurato correttamente.
forsvunnet,

2
come sapere se cron.php funziona o no?
Teja Bhagavan Kollepara,

2
Puoi tracciare i log all'interno di / var / log / cron
Beto Castillo il

Ho un problema con l'email di ordine in Magento 2. Anche Cron è in esecuzione ma la posta non viene inviata. La maggior parte delle attività cron sono mancate nella tabella del database. Come posso risolverlo?
Magecode

@Magecode Suggerirei prima di cercare domande specifiche su Magento 2. Se non ce ne sono, sentiti libero di aggiungere la tua domanda con i dettagli su ciò che hai scoperto / escluso finora.
Kristof a Fooman il

29

Esistono 2 metodi per inviare e-mail dal nostro negozio Magento 1.

  1. Usando cron
  2. Evitando cron

Se vuoi evitare cron:

Apri il tuo file order.php su

app / code / core / Mage / Vendite / Modello / order.php

Linea # 1356,1450,

modificare

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

per:

$mailer-> send();

In app/design/frontend/base/default/template/checkout/success.phtml: aggiungi la seguente riga Pagina di successo principale per l'invio diretto della posta

$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

funziona perfettamente, è necessario aggiungere codice su success.phtml perché senza che sembra funzionare bene
Suneth Kalhara,

3
Ciao felice di ascoltarlo. Non è necessario aggiungere alcun codice perché la posta transazionale raggiungerà immediatamente l'e-mail.
Teja Bhagavan Kollepara,

1
Non modificare mai (o sovrascrivere, per questo motivo) il codice del fornitore: cosa succede quando si aggiorna?
Bachi,

20

ho rimosso il seguente codice della coda di posta da Template.php, quindi ho iniziato a ricevere e-mail quando l'ordine è stato effettuato dal cliente o quando faccio clic su Invia e-mail dalla scheda "Vendite / Ordini" del pannello di amministrazione.

Magento aveva impostato l'email di ordine per l'invio tramite processo pianificato anziché tramite e-mail istantanea ... probabilmente per motivi di prestazioni (non so perché, sono molto nuovo a Magento) ... tuttavia ho intenzione di reinserire questo codice Template.php e trova un modo per impostare ed eseguire il processo di pianificazione in modo che venga eseguito ogni 5 minuti ...

Template.php si trova in => /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;
    }

Questo metodo ha risolto il problema, ma l'abbonamento alla newsletter non funziona. Tornando al vecchio template.php è stato risolto il problema di abbonamento alla newsletter.
balajisoundar,

14

Esistono due soluzioni come segue:

Soluzione-01: utilizzo di cron

Sistema> Configurazione> Avanzate> Sistema> Cron

Le impostazioni predefinite sono:

Prima di tutto, Magento 1.9+ si affida completamente ai lavori cron per inviare e-mail transazionali. Se prima non avevi impostato correttamente i lavori cron, dovrai farlo ora.

Prima di tutto assicurati di aver impostato cron task nell'amministratore di Magento sotto

Sistema> Configurazione> Avanzate> Sistema> Cron

Le impostazioni predefinite sono:

Genera pianificazioni ogni 15 Pianificazioni in anticipo per 20 perse se non eseguite entro 15 Pulizia cronologia ogni 10 Cronologia successi Durata 60 Cronologia errori durata 600

Ci sono persone che suggeriscono che queste impostazioni dovrebbero essere modificate, ma poiché non riescono a concordare la migliore combinazione, preferirei lasciarlo così com'è.

Devi quindi andare nel tuo pannello di controllo di hosting e impostare cron job. In cPanel è sotto Avanzato> Cron Jobs. Impostali per l'esecuzione ogni cinque minuti e usa questo comando:

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

Controlla che il percorso sopra sia corretto e che il file cron.php sia effettivamente lì nella radice della tua installazione di Magento (se hai appena aggiornato, dovrebbe essere). Cambia il nome utente nell'account corretto.

Ora, inizialmente ho fatto l'errore di seguire i consigli degli sviluppatori su xtento.com che dicono di usare una stringa di comando wget: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php

Soluzione-02: evitare cron

Le email transazionali verranno inviate all'istante.

//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

10

Con Magento 1.9 tutte le e-mail verranno messe in coda e successivamente inviate tramite Cron.

Nota di rilascio di Magento 1.9

Se desideri che le tue email di transazione vengano inviate tramite Cron, puoi impostare cron da Sistema > Configurazione > Sistema nella scheda Cron O creare cron in Cpanel indirizzandolo a cron.sh o cron.php situato nella directory Magento di root.


10

Basta installare l'estensione "SMTP Pro Email": http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html

Compilare con i dettagli SMTP personalizzati e il gioco è fatto.


Mi ci sono voluti due giorni interi per capire. Non sono necessari processi Cron, sebbene se si desidera che i processi cron funzionino e non si desideri eseguire quanto sopra, è possibile effettuare le seguenti operazioni:

Modifica cron.php nella directory principale di Magento

Dopo:

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

aggiungi questa riga di codice:

$isShellDisabled = true;

Imposta Cron Job

Nel pannello C apri la sezione Cron Jobs
Crea un cron job che esegue il seguente comando ogni 15 minuti:

php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php

È importante notare che con SMTP Pro questa configurazione deve essere eseguita per Magento 1.9.1 e versioni successive: Sistema -> Configurazione -> SMTP Pro -> Configurazione coda -> Modifica utilizzo coda da Predefinito a Mai.
Shrenik,

8

In Magento 1.9.1.0, Magento ha aggiunto una nuova funzionalità: memorizzano l'e-mail dell'ordine nella core_email_queuetabella per inviare l'e-mail degli ordini. Dobbiamo impostare il cron.phpserver in

Il cron.phpfile imposta la core_email_queue_send_alltabella di pianificazione in cron. Quando crone esegue il metodo "send" chiamato da Mage_Core_Model_Email_Queue. Mandano la posta al cliente.

Quindi sopra la correzione funziona senza alcuna modifica nel file principale.


6

Basta fare il setup cron sul tuo server come sotto il comando e poi inizierai a ricevere mail di vendita.

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

Usa impostazioni comuni come "*****"

Devi sostituire YOUR_USER_NAME e Path_to_cron.php con i tuoi.


6

Usando n98-magerun ho appena eseguito il seguente:

n98-magerun sys:cron:run core_email_queue_send_all

O per cronometrare se non si desidera eseguirlo sempre:

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

Questo invia tutte le email in coda ogni 10 secondi.


6

per il server godaddy usare il seguente codice durante l'impostazione del cronjob:

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

Questo funzionerà ogni minuto.inserisci qui la descrizione dell'immagine


5

se è SOLO l'e-mail dell'ordine che non invia, è perché Magento mette in coda solo le e-mail dell'ordine e le salva per inviarle in batch. Se non hai la tua configurazione Heartbeat Cron .. allora non lasceranno mai la coda di Magento.

Stai visualizzando altre e-mail di Magento che escono perché vengono inviate direttamente da Magento al tuo demone mailer. Quelle code di Magento (come l'e-mail dell'ordine) non vengono nemmeno consegnate al demone mailer finché non viene eseguito Hearbeat Cron.

Per costringerli ad uscire ... vai su http://yourmagentodomain.com/cron.php e continua ad aggiornare quella pagina ogni cinque minuti e vedrai che le email dell'ordine in coda iniziano a uscire. Il Heartbeat Cron dovrebbe fare questo per te. Oh, e quando navighi verso quel file cron.php, la pagina dovrebbe essere vuota, quindi non allarmarti ... funzionerà.


5

Ho avuto lo stesso problema e ho scoperto che era correlato a un'estensione. Fooman Email Attachments è stato aggiornato alla v0.10.4. Le versioni precedenti alla v0.10.3 non funzioneranno con Magento 1.9.


5

Ho seguito la knowledge base per farlo funzionare: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info

Nella parte "Localizzazione delle e-mail transazionali", dopo aver seguito le istruzioni precedenti, la copia in / en_UK ha finalmente ricevuto le e-mail (comprese quelle precedentemente non inviate), abbiamo anche avuto un problema con la pagina di conferma dell'ordine che non veniva visualizzata ai clienti su completamento. Anche questo è stato risolto.

Ad esempio, per la locale en_GB dovresti copiare i file che si trovano in:

app / locale / en_US / template / e-mail

alla posizione:

app / locale / en_GB / template / e-mail


2
Benvenuti in Magento SE! Puoi approfondire ulteriormente la tua risposta (offrendo esempi di codice ecc.)?
benmarks

3

Se il tuo sistema di posta (smtp, zend_mail) funziona bene; la disabilitazione di mailQueue potrebbe risolvere il tuo problema.

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

Cambia linea 407

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

per

if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {

5
questo interrompe la funzionalità del modulo di contatto.
Zoya,

9
Non modificare il core
Kevin Schroeder il

1
Non fornire soluzioni che richiedono modifiche a CORE. Le classi principali non devono mai essere modificate.
Ahsan Horani,

2

Se hai l'estensione SMTPpro, prova a disabilitarla. E ricontrolla. Tutte le email funzionano bene e devi solo configurarle correttamente.


0

Il modo migliore è fare una copia della tua app / codice / core / Mage / Core / Model / Email / Template / Mailer.php

Nella cartella locale app / codice / local / Mage / Core / Model / Email / Template / Mailer.php

Quindi commentare questa riga nella riga 76

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

Allora hai finito. Non è necessario modificare il modello success.phtml. : D

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.