Yeni sipariş e-posta onayı gönderilmiyor


Yanıtlar:


96
  1. Magento 1.9.1 ile başlayarak, e-postalar ödeme sırasında doğrudan gönderilmez, ancak sıraya alınır.
  2. Sıra, Magento cronjob'ınız aracılığıyla işleniyor - lütfen bunun ayarlandığından ve doğru çalıştığından emin olun.
  3. AOE_Scheduler uzantısı , Magento cronjob'ınızın doğru şekilde yapılandırıldığını ve çalıştığını onaylamanıza yardımcı olabilir.

6
Çalıştığından emin ol cron.sh! Sadece tam gününü bu hata ayıklama için harcadık, sadece cronun yanlış yapılandırıldığını keşfetmek için.
forsvunnet

2
cron.php'nin çalışıp çalışmadığını nasıl bilebilirim?
Teja Bhagavan Kollepara 24:15

2
/ Var / log / cron içindeki günlükleri takip edebilirsiniz
Beto Castillo

Magento 2'deki sipariş e-postasıyla ilgili sorunum var. Cron da çalışıyor ancak posta göndermiyor. Veritabanı tablosunda cron görevlerinin çoğu kaçırıldı. Nasıl çözebilirim?
Magecode,

@Magecode Önce Magento 2'ye özgü soruları aramanızı öneririm. Eğer hiç kimse yoksa, şu ana kadar neyi bulduğunuzu / reddettiğinizi ayrıntılarıyla kendi sorunuzu eklemekten çekinmeyin.
Fooman'daki Kristof,

29

Magento 1 mağazamızdan posta yollamanın 2 yöntemi vardır.

  1. Cron Kullanarak
  2. Cron kaçınarak

Crondan kaçınmak istiyorsanız:

Order.php dosyanızı adresinden açın.

Uygulama / kod / çekirdek / Mage / Satış / Modeli / Order.php

Çizgi # 1356,1450,

değişiklik

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

için:

$mailer-> send();

İçinde app/design/frontend/base/default/template/checkout/success.phtml: aşağıdaki satırı ekleyin Doğrudan posta göndermek için en iyi başarı sayfası

$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

mükemmel çalışıyor, gerekli becoz o iyi çalışıyor görünüyor olmadan success.phtml üzerinde kodu eklemek olmasıdır
Suneth Kalhara

3
Merhaba, bunu dinlediğime sevindim. İşlemsel postaların hemen e-postaya ulaşacağından herhangi bir kod eklemenize gerek yoktur.
Teja Bhagavan'dır Kollepara

1
Satıcı kodunu hiçbir zaman değiştirmeyin (veya üzerine yazmayın) - yükseltme yaptığınızda ne olur?
Bachi

20

Aşağıdaki posta kuyruğu kodunu Template.php'den kaldırdım, sonra sipariş müşteri tarafından verildiğinde veya yönetici panelindeki "Satış / Siparişler" sekmesinden e-posta gönder'i tıkladığımda e-posta almaya başladım.

Magento sipariş e-postasını anlık e-posta yerine zamanlama işi tarafından gönderilecek şekilde ayarlamıştı ... muhtemelen performans nedeniyle? (Nedenini bilmiyorum, magento için çok yeni olduğumu bilmiyorum) ... Template.php ve her 5 dakikada bir çalışmak üzere zamanlama işini ayarlamak ve çalıştırmak için bir yol bulun ...

Template.php => /app/code/core/Mage/Core/Model/Email/Template.php konumunda bulunur.

   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;
    }

Bu yöntem sorunu çözdü, ancak bülten aboneliği çalışmıyor. Eski template.php'ye geri dönülmesi haber bülteni abonelik sorununu çözdü.
balajisoundar 7:15

14

Aşağıdaki gibi iki çözüm var:

Çözüm-01: cron kullanımı

Sistem> Konfigürasyon> Gelişmiş> Sistem> Cron

Varsayılan ayarlar:

Öncelikle, Magento 1.9+ işlemsel e-postalar göndermek için cron işlerine tamamen güveniyor. Daha önce düzgün bir şekilde ayarlanmış cron işleriniz yoksa, şimdi yapmak zorunda kalacaksınız.

Her şeyden önce Magento yöneticisinde cron görevlerini kurduğunuzdan emin olun.

Sistem> Konfigürasyon> Gelişmiş> Sistem> Cron

Varsayılan ayarlar:

15 Geçmiş İçinde Çalışmazsa 20 Özledim Her 15 Takvimde Plan Yapın Her 10 Başarı Geçmişi Ömrü 60 Ömrü Ömrü Ömür Ömrü 600

Bu ayarların değiştirilmesi gerektiğini öne süren insanlar var, ancak en iyi kombinasyon üzerinde anlaşamadıkları için, olduğu gibi bırakmayı tercih ederim.

Daha sonra barındırma kontrol panelinize girmeniz ve cron işleri kurmanız gerekir. CPanel'de Gelişmiş> Cron İşleri altındadır. Her beş dakikada bir çalışacak şekilde ayarlayın ve bu komutu kullanın:

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

Yukarıdaki yolun doğru olduğunu ve cron.php dosyasının aslında Magento kurulumunuzun kökününde bulunduğunu kontrol edin (daha yeni bir yükseltme yaptıysanız, olması gerekir). Kullanıcı adını doğru hesaba değiştir.

Şimdi, başlangıçta bir wget komut dizesi kullanmak isteyen xtento.com adresindeki geliştiricilerin tavsiyelerine uyarak hata yaptım: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php

Çözüm-02: cron önlemek

İşlem e-postaları anında gönderilecektir.

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

Magento 1.9 ile tüm e-postalar sıraya alınır ve daha sonra Cron aracılığıyla gönderilir.

Magento 1.9 Sürüm Notu

Hesap hareketleri e-postalar Cron'un yoluyla gönderilmek üzere istiyorsanız, gelen gelen cron'u ayarlayabilirsiniz Sistem > Yapılandırma > Sistem sekmesi altında Cron YA içindeki cron oluşturmak Cpanel senin yönlendirmek cron.sh veya cron.php kök Magento dizinde yer.


10

Sadece "SMTP Pro Email" uzantısını yükleyin: http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html

Özel SMTP ayrıntılarınızı doldurun ve tamamlayın.


Bu beni anlamak için iki tam gün sürdü. Cron İşlerine gerek yok, cron işlerinin çalışmasını istiyorsanız ve yukarıdakileri yapmak istemeseniz de, aşağıdakileri yapabilirsiniz:

Magento kök dizininde cron.php dosyasını düzenleyin.

Sonra:

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

bu kod satırını ekleyin:

$isShellDisabled = true;

Cron İşini Ayarla

C Panel'de Cron İşleri bölümünü açın
Aşağıdaki komutu çalıştıran her 15 dakikada bir cron işi oluşturun:

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

SMTP Pro ile bu konfigürasyonun Magento 1.9.1 ve daha üstü için yapılması gerektiğine dikkat etmek gerekir: Sistem -> Yapılandırma -> SMTP Pro -> Sıra Yapılandırması -> Sıra Kullanımı Varsayılan ayardan Hiçbir zaman değiştirilir.
Shrenik

8

Magento 1.9.1.0'da, Magento yeni bir özellik ekledi: Sipariş e-postasını core_email_queuegöndermek için sipariş e-postasını tabloda saklar . cron.phpSunucuyu ayarlamak zorundayız

cron.phpDosya set core_email_queue_send_allcron zamanlama tablosunda. Crone ne zaman denilen "send" yöntemini yürütün Mage_Core_Model_Email_Queue. Postayı müşteriye gönderiyorlar.

Yani yukarıdaki düzeltme çekirdek dosyasında herhangi bir değişiklik olmadan çalışıyor.


6

Sunucunuzdaki cron kurulumunu aşağıdaki komutla yapın; satış e-postalarını almaya başlayacaksınız.

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

"*****" olarak ortak ayarları kullanın

YOUR_USER_NAME & Path_to_cron.php dosyasını kendinizle değiştirmeniz gerekiyor.


6

Kullanılması N98-magerun Sadece aşağıdaki çalıştırın:

n98-magerun sys:cron:run core_email_queue_send_all

Veya her zaman çalıştırmak istemiyorsanız, zamana göre:

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

Bu, tüm e-postaları her 10 saniyede bir sıraya gönderir.


6

godaddy sunucusu için cronjob ayarlanırken aşağıdaki kodu kullanın:

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

Bu her dakika çalışacak.görüntü tanımını buraya girin


5

SADECE sipariş e-postası gönderilmiyorsa, Magento yalnızca sipariş e-postalarını sıraya koyar ve bunları toplu olarak göndermek için kaydeder. Eğer Heartbeat Cron kurulumunuz yoksa .. o zaman Magento kuyruğundan asla ayrılmazlar.

Diğer Magento e-postalarının gönderildiğini görüyorsunuz, çünkü bunlar doğrudan Magento'dan posta gönderen arka planınıza geliyor. Magento kuyrukları (sipariş e-postası gibi), Hearbeat Cron çalıştırılıncaya kadar mailer servisine bile teslim edilmedi.

Dışarı çıkmaya zorlamak için ... http://yourmagentodomain.com/cron.php adresine gidin ve her beş dakikada bir bu sayfayı yenilemeye devam edin; sıradaki e-postaların tükenmeye başladığını göreceksiniz. Heartbeat Cron'un bunu sizin için yapması gerekiyordu. Oh, ve bu cron.php dosyasına gittiğinizde, sayfanın boş olması gerekiyordu, bu yüzden alarma geçmeyin ... işe yarayacak.


5

Aynı sorunu yaşadım ve bunun bir uzantısı ile ilgili olduğunu öğrendim. Fooman E-posta Ekleri şimdi v0.10.4 olarak güncellendi. V0.10.3 altındaki sürümler Magento 1.9 ile çalışmaz.


5

Çalışması için bilgi tabanını takip ettim: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info

"İşlemsel E-postaların Yerelleştirilmesi" bölümünde, önceki talimatları uyguladıktan sonra / en_UK’ye kopyalamak sonunda e-postaları yoluna koydu (daha önce gönderilmemiş olanlar dahil) tamamlanması. Bu da düzeltildi.

Örneğin, en_GB yerel ayarı için bulunan dosyaları kopyalamanız gerekir:

Uygulamanın / yerel / tr / şablon / e-posta

yere:

Uygulamanın / locale / tr / şablon / e-posta


2
Magento SE'ye Hoşgeldiniz! Cevabınızı daha da ayrıntılandırabilir misiniz (kod örnekleri sunarak vb.)?
Benmark

3

Posta sisteminiz (smtp, zend_mail) düzgün çalışıyorsa; mailQueue’yu devre dışı bırakmak sorununuzu çözebilir.

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

Satır Değiştir 407

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

için

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

5
bu iletişim formu işlevselliğini bozar.
Zoya

9
Çekirdek düzenleme yapmayın
Kevin Schroeder

1
Lütfen CORE'da değişiklik gerektiren çözümler sunmayın. Çekirdek sınıflar asla değiştirilmemelidir.
Ahsan Horani

2

SMTPpro uzantısına sahipseniz, devre dışı bırakmayı deneyin. Ve tekrar kontrol et. Tüm e-postalar iyi çalışıyor ve yalnızca doğru şekilde yapılandırmanız gerekiyor.


0

Daha iyi bir yol, uygulamanızın bir kopyasını çıkarmaktır / kod / çekirdek / Mage / Çekirdek / Model / E-posta / Şablon / Mailer.php

Yerel klasör uygulamanıza / kod / yerel / Mage / Çekirdek / Model / E-posta / Şablon / Mailer.php

Ardından 76 numaralı satıra bu satırı yazın.

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

O zaman bitti. Success.phtml şablonunu değiştirmenize gerek yok. : D

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.