Ho aggiornato il mio sito Web a 1.9.1 e ora i miei clienti non ricevono l'e-mail di conferma dell'ordine.
Ho provato a inviare tramite il pannello di amministrazione ma non succede nulla, inoltre non viene ricevuta alcuna email di aggiornamento.
Ho aggiornato il mio sito Web a 1.9.1 e ora i miei clienti non ricevono l'e-mail di conferma dell'ordine.
Ho provato a inviare tramite il pannello di amministrazione ma non succede nulla, inoltre non viene ricevuta alcuna email di aggiornamento.
Risposte:
cron.sh
stia funzionando! Abbiamo appena trascorso un giorno intero a eseguire il debug di questo solo per scoprire che cron non era configurato correttamente.
Esistono 2 metodi per inviare e-mail dal nostro negozio Magento 1.
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
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;
}
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
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.
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:
Dopo:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
aggiungi questa riga di codice:
$isShellDisabled = true;
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
In Magento 1.9.1.0, Magento ha aggiunto una nuova funzionalità: memorizzano l'e-mail dell'ordine nella core_email_queue
tabella per inviare l'e-mail degli ordini. Dobbiamo impostare il cron.php
server in
Il cron.php
file imposta la core_email_queue_send_all
tabella 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.
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.
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.
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à.
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
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\*/) {
Se hai l'estensione SMTPpro, prova a disabilitarla. E ricontrolla. Tutte le email funzionano bene e devi solo configurarle correttamente.
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