Yanıtlar:
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.
Magento 1 mağazamızdan posta yollamanın 2 yöntemi vardır.
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
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;
}
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
Magento 1.9 ile tüm e-postalar sıraya alınır ve daha sonra Cron aracılığıyla gönderilir.
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.
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:
Sonra:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
bu kod satırını ekleyin:
$isShellDisabled = true;
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
Magento 1.9.1.0'da, Magento yeni bir özellik ekledi: Sipariş e-postasını core_email_queue
göndermek için sipariş e-postasını tabloda saklar . cron.php
Sunucuyu ayarlamak zorundayız
cron.php
Dosya set core_email_queue_send_all
cron 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.
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.
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.
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.
Ç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
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\*/) {
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.
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