Ich habe meine Website auf 1.9.1 aktualisiert und jetzt erhalten meine Kunden keine Bestellbestätigungs-E-Mail.
Ich habe versucht, über das Admin-Panel zu senden, aber es passiert nichts. Außerdem wird keine Aktualisierungs-E-Mail empfangen.
Ich habe meine Website auf 1.9.1 aktualisiert und jetzt erhalten meine Kunden keine Bestellbestätigungs-E-Mail.
Ich habe versucht, über das Admin-Panel zu senden, aber es passiert nichts. Außerdem wird keine Aktualisierungs-E-Mail empfangen.
Antworten:
cron.sh
läuft! Wir haben gerade einen ganzen Tag damit verbracht, dieses Problem zu beheben, um festzustellen, dass cron falsch konfiguriert wurde.
Es gibt 2 Methoden, um E-Mails aus unserem Magento 1-Shop zu versenden.
Wenn Sie Cron vermeiden wollen:
Öffnen Sie Ihre order.php-Datei unter
app / code / core / Mage / Sales / Model / Order.php
Zeile # 1356,1450,
Veränderung
//$mailer->setQueue($emailQueue)->send();
zu:
$mailer-> send();
In app/design/frontend/base/default/template/checkout/success.phtml
: folgende Zeile hinzufügen Top Erfolgsseite für den direkten Mailversand
$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
Ich habe den folgenden E-Mail-Warteschlangencode aus Template.php entfernt und dann angefangen, E-Mails zu erhalten, wenn die Bestellung vom Kunden aufgegeben wurde oder wenn ich auf der Registerkarte "Verkauf / Bestellungen" im Administrationsbereich auf E-Mail senden geklickt habe.
Magento hat die Auftrags-E-Mail so eingestellt, dass sie per Zeitplan-Job anstatt per Sofort-E-Mail gesendet wird ... wahrscheinlich aus Performance-Gründen? (Ich weiß nicht warum, ich bin sehr neu in Magento) ... aber ich werde diesen Code wieder einfügen die Template.php und finde eine Möglichkeit, den Zeitplan-Job so einzustellen und auszuführen, dass er alle 5 Minuten ausgeführt wird ...
Template.php befindet sich 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;
}
Es gibt zwei Lösungen wie folgt:
Lösung-01: Verwenden von Cron
System> Konfiguration> Erweitert> System> Cron
Die Standardeinstellungen sind:
Zunächst einmal ist Magento 1.9+ vollständig auf Cron-Jobs angewiesen, um Transaktions-E-Mails zu versenden. Wenn Sie zuvor keine ordnungsgemäßen Cron-Jobs eingerichtet haben, müssen Sie dies jetzt tun.
Stellen Sie zunächst sicher, dass Sie im Magento-Admin unter cron-Tasks eingerichtet haben
System> Konfiguration> Erweitert> System> Cron
Die Standardeinstellungen sind:
Generieren Sie alle 15 Zeitpläne einen Zeitplan für 20 verpasste, wenn Sie nicht innerhalb von 15 ausgeführt werden
Es gibt Leute, die vorschlagen, diese Einstellungen zu ändern, aber da sie sich nicht auf die beste Kombination einigen können, lasse ich es lieber so, wie es ist.
Sie müssen dann in Ihr Hosting-Control-Panel gehen und Cron-Jobs einrichten. In cPanel befindet es sich unter Erweitert> Cron-Jobs. Richten Sie sie so ein, dass sie alle fünf Minuten ausgeführt werden, und verwenden Sie den folgenden Befehl:
php -f /home/username/public_html/cron.php
Stellen Sie sicher, dass der oben angegebene Pfad korrekt ist und dass sich die Datei cron.php im Stammverzeichnis Ihrer Magento-Installation befindet (wenn Sie gerade ein Upgrade durchgeführt haben, sollte dies der Fall sein). Ändern Sie den Benutzernamen in das richtige Konto.
Jetzt habe ich zunächst den Fehler gemacht, den Rat der Entwickler von xtento.com zu befolgen, die sagen, dass sie eine wget-Befehlszeichenfolge verwenden sollen: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php
Solution-02: Vermeiden Sie cron
Transaktions-E-Mails werden sofort gesendet.
//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
Mit Magento 1.9 werden alle E-Mails in die Warteschlange gestellt und später über Cron versendet.
Wenn Sie möchten, dass Ihre Transaktions-E-Mails über Cron gesendet werden, können Sie den Cron über System > Konfiguration > System unter der Registerkarte Cron einstellen ODER in Cpanel einen Cron erstellen, der direkt zu Ihrer cron.sh oder cron.php in Ihrem Magento-Stammverzeichnis führt.
Installieren Sie einfach die Erweiterung "SMTP Pro Email": http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
Füllen Sie Ihre benutzerdefinierten SMTP-Details aus und fertig.
Ich habe zwei volle Tage gebraucht, um das herauszufinden. Es werden keine Cron-Jobs benötigt. Wenn Sie jedoch möchten, dass Cron-Jobs funktionieren, und dies nicht möchten, können Sie Folgendes tun:
Nach:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
Fügen Sie diese Codezeile hinzu:
$isShellDisabled = true;
Öffnen Sie in C Panel den Abschnitt Cron-Jobs.
Erstellen Sie einen Cron-Job, der alle 15 Minuten den folgenden Befehl ausführt:
php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
In Magento 1.9.1.0 hat Magento eine neue Funktion hinzugefügt: Sie speichern die Bestell-E-Mail in der core_email_queue
Tabelle, um die Bestell-E-Mail zu senden. Wir müssen den cron.php
In-Server einstellen
Die cron.php
Datei legt die core_email_queue_send_all
In-Cron-Zeitplantabelle fest. Führen Sie bei crone die Methode "send" aus, die von aufgerufen wird Mage_Core_Model_Email_Queue
. Sie senden die Mail an den Kunden.
Das obige Update funktioniert also ohne Änderung der Core-Datei.
Führen Sie einfach das Cron-Setup auf Ihrem Server wie folgt aus: Befehl & dann erhalten Sie Sales-Mails.
php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php
Übliche Einstellungen als "*****" verwenden
Sie müssen YOUR_USER_NAME & Path_to_cron.php durch Ihre ersetzen.
Unter Verwendung von n98-magerun führe ich einfach Folgendes aus:
n98-magerun sys:cron:run core_email_queue_send_all
Oder um es zeitlich festzulegen, wenn Sie es nicht ständig ausführen möchten:
watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all
Dadurch werden alle 10 Sekunden alle in der Warteschlange befindlichen E-Mails gesendet.
Wenn NUR die Bestell-E-Mail nicht gesendet wird, werden in Magento nur die Bestell-E-Mails in die Warteschlange gestellt und gespeichert, um sie stapelweise zu versenden. Wenn Sie Ihr Heartbeat Cron-Setup nicht haben, verlassen sie niemals die Magento-Warteschlange.
Sie sehen, dass andere Magento-E-Mails ausgehen, da diese direkt von Magento an Ihren Mailer-Daemon übergeben werden. Die Magento-Warteschlangen (wie die Bestell-E-Mail) werden erst dann an den Mailer-Daemon übergeben, wenn der Hearbeat Cron ausgeführt wird.
Wechseln Sie zu http://yourmagentodomain.com/cron.php, und aktualisieren Sie diese Seite alle fünf Minuten. Die in der Warteschlange befindlichen Bestell-E-Mails erlöschen. Der Heartbeat Cron soll das für Sie tun. Oh, und wenn Sie zu dieser cron.php-Datei navigieren, sollte die Seite leer sein, seien Sie also nicht beunruhigt ... es wird funktionieren.
Ich verfolgte die Wissensdatenbank, um sie zum Laufen zu bringen: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info
Im Abschnitt "Lokalisieren von Transaktions-E-Mails" wurden nach Befolgen der vorherigen Anweisungen beim Kopieren nach / de_DE die E-Mails endgültig auf den Weg gebracht (einschließlich der zuvor nicht gesendeten). Außerdem trat ein Problem auf, bei dem die Bestellbestätigungsseite nicht für Kunden angezeigt wurde Fertigstellung. Dies wurde auch behoben.
Für das Gebietsschema en_GB müssten Sie beispielsweise die Dateien kopieren, die sich unter folgender Adresse befinden:
app / locale / de_DE / template / email
zum Ort:
app / locale / de_DE / template / email
Wenn Ihr Mailsystem (smtp, zend_mail) einwandfrei funktioniert; Das Deaktivieren von mailQueue kann Ihr Problem lösen.
/app/code/core/Mage/Core/Model/Email/Template.php
Ändern Sie die Zeile 407
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
zu
if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {
Wenn Sie die Erweiterung SMTPpro haben, versuchen Sie, diese zu deaktivieren. Und nochmal nachschauen. Alle E-Mails funktionieren einwandfrei und Sie müssen nur richtig konfigurieren.
Besser ist es, eine Kopie Ihrer App / code / core / Mage / Core / Model / Email / Template / Mailer.php zu erstellen
In deinen lokalen Ordner app / code / local / Mage / Core / Model / Email / Template / Mailer.php
Kommentieren Sie dann diese Zeile in Zeile 76 aus
->setQueue($this->getQueue())
Dann bist du fertig. Die Vorlage success.phtml muss nicht geändert werden. : D