Saya telah meningkatkan situs web saya menjadi 1.9.1 dan sekarang pelanggan saya tidak menerima email konfirmasi pesanan.
Saya mencoba mengirim melalui panel admin tetapi tidak ada yang terjadi, juga tidak ada email pembaruan yang diterima.
Saya telah meningkatkan situs web saya menjadi 1.9.1 dan sekarang pelanggan saya tidak menerima email konfirmasi pesanan.
Saya mencoba mengirim melalui panel admin tetapi tidak ada yang terjadi, juga tidak ada email pembaruan yang diterima.
Jawaban:
cron.sh
sudah berjalan! Kami hanya menghabiskan sehari penuh men-debug ini hanya untuk mengetahui bahwa cron salah konfigurasi.
Ada 2 metode untuk mengirim surat dari toko Magento 1 kami.
Jika Anda ingin menghindari cron:
Buka file order.php Anda di
app / code / core / Mage / Penjualan / Model / Order.php
Baris # 1356.150,
perubahan
//$mailer->setQueue($emailQueue)->send();
untuk:
$mailer-> send();
Dalam app/design/frontend/base/default/template/checkout/success.phtml
: tambahkan baris berikut Halaman kesuksesan teratas untuk mengirim surat langsung
$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
saya menghapus kode antrian surat berikut dari Template.php, lalu saya mulai menerima email ketika pesanan dilakukan oleh pelanggan atau ketika saya mengklik kirim email dari panel admin tab "Penjualan / Pesanan".
Magento telah menetapkan email pesanan yang akan dikirim oleh jadwal pekerjaan daripada email instan ... mungkin karena alasan kinerja? (Saya tidak tahu mengapa, saya sangat baru untuk Magento) ... namun saya akan memasukkan kode ini kembali Template.php dan temukan cara untuk mengatur dan menjalankan pekerjaan jadwal untuk berjalan setiap 5 menit ...
Template.php terletak di => /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;
}
Ada dua solusi sebagai berikut:
Solusi-01: Menggunakan cron
Sistem> Konfigurasi> Lanjutan> Sistem> Cron
Pengaturan default adalah:
Pertama-tama, Magento 1.9+ sepenuhnya bergantung pada pekerjaan cron untuk mengirim email transaksional. Jika Anda tidak memiliki pekerjaan cron yang diatur dengan benar sebelumnya, Anda harus melakukannya sekarang.
Pertama-tama pastikan Anda telah menyiapkan tugas cron di admin Magento di bawah
Sistem> Konfigurasi> Lanjutan> Sistem> Cron
Pengaturan default adalah:
Hasilkan Jadwal Setiap 15 Jadwal Menjelang 20 Hilang jika Tidak Berjalan Dalam 15 Riwayat Pembersihan Setiap 10 Riwayat Sukses Seumur Hidup 60 Kegagalan Riwayat Seumur Hidup 600
Ada orang yang menyarankan pengaturan ini harus diubah, tetapi karena mereka tampaknya tidak dapat menyetujui kombinasi terbaik, saya lebih suka membiarkannya apa adanya.
Anda kemudian perlu masuk ke panel kontrol hosting Anda dan mengatur pekerjaan cron. Di cPanel ada di bawah Advanced> Cron Jobs. Atur agar dijalankan setiap lima menit dan gunakan perintah ini:
php -f /home/username/public_html/cron.php
Pastikan path di atas benar dan file cron.php sebenarnya ada di root instalasi Magento Anda (jika Anda baru saja memutakhirkan, seharusnya). Ubah nama pengguna ke akun yang benar.
Sekarang, saya awalnya membuat kesalahan dengan mengikuti saran dari pengembang di xtento.com yang mengatakan menggunakan string perintah wget: wget -O / dev / null -q http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron. php
Solusi-02: Hindari cron
Email transaksional akan dikirim secara instan.
//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
Dengan Magento 1.9 semua email akan diantrekan dan kemudian dikirim melalui Cron.
Jika Anda ingin agar Email Transaksi dikirim melalui Cron, Anda dapat mengatur cron dari dari System > Configuration > System di bawah tab Cron ATAU membuat cron di Cpanel mengarahkannya ke cron.sh atau cron.php yang terletak di direktori Magento root Anda.
Cukup instal ekstensi "Email Pro SMTP": http://www.magentocommerce.com/magento-connect/smtp-pro-email-free-custom-smtp-email.html
Isi dengan rincian SMTP Kustom Anda dan selesai.
Saya butuh dua hari penuh untuk mencari tahu. Tidak diperlukan Cron Jobs, meskipun jika Anda ingin cron berfungsi dan Anda tidak ingin melakukan hal di atas, Anda dapat melakukan hal berikut:
Setelah:
$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;
tambahkan baris kode ini:
$isShellDisabled = true;
Pada C Panel, buka bagian Cron Jobs.
Buat cron job yang menjalankan perintah berikut setiap 15 menit:
php -f /home/USERNAME/public_html/domain.com/magento_folder/cron.php
Di Magento 1.9.1.0, Magento telah menambahkan fitur baru: Mereka menyimpan email pesanan di core_email_queue
tabel untuk mengirim email pesanan. Kita harus mengatur cron.php
server di
The cron.php
berkas mengatur core_email_queue_send_all
dalam tabel jadwal cron. Ketika crone, jalankan metode "send" yang dipanggil dari Mage_Core_Model_Email_Queue
. Mereka mengirim surat kepada pelanggan.
Jadi perbaikan di atas berfungsi tanpa ada perubahan pada file inti.
Lakukan saja pengaturan cron di server Anda seperti di bawah ini & Anda akan mulai menerima email penjualan.
php -q /home/YOUR_USER_NAME/public_html/Path_to_cron.php
Gunakan pengaturan umum sebagai "*****"
Perlu mengganti YOUR_USER_NAME & Path_to_cron.php dengan milik Anda.
Menggunakan n98-magerun saya hanya menjalankan yang berikut ini:
n98-magerun sys:cron:run core_email_queue_send_all
Atau mengatur waktu jika Anda tidak ingin menjalankannya sepanjang waktu:
watch -n 10 n98-magerun sys:cron:run core_email_queue_send_all
Ini mengirim semua email dalam antrian setiap 10 detik.
jika HANYA email pesanan tidak terkirim, itu karena Magento hanya mengantri email pesanan dan menyimpannya untuk dikirim dalam batch. Jika Anda tidak memiliki pengaturan Heartbeat Cron Anda .. maka mereka tidak akan pernah meninggalkan antrian Magento.
Anda melihat email Magento lainnya keluar karena mereka diserahkan langsung dari Magento ke daemon mailer Anda. Antrian Magento (seperti email pesanan) bahkan tidak diserahkan ke daemon mailer hingga Hearbeat Cron berjalan.
Untuk memaksa mereka keluar ... navigasikan ke http://yourmagentodomain.com/cron.php dan terus menyegarkan halaman itu setiap lima menit dan Anda akan melihat email pesanan yang antri mulai keluar. Cron Detak Jantung seharusnya melakukan ini untuk Anda. Oh, dan ketika Anda menavigasi ke file cron.php itu, halaman tersebut seharusnya kosong jadi jangan khawatir ... itu akan berfungsi.
Saya mengikuti basis pengetahuan untuk membuatnya berfungsi: http://www.magentocommerce.com/knowledge-base/entry/ee1141-ce191-responsive-email#contact-info
Pada bagian "Melokalkan Email Transaksional", setelah mengikuti instruksi sebelumnya, menyalin ke / en_UK akhirnya mendapatkan email dalam perjalanan mereka (termasuk yang sebelumnya tidak terkirim), Kami juga memiliki masalah dengan halaman konfirmasi pesanan yang tidak ditampilkan kepada pelanggan di penyelesaian. Ini diperbaiki juga.
Misalnya untuk lokal en_GB Anda perlu menyalin file yang berada di:
app / locale / en_US / template / email
ke lokasi:
app / locale / en_GB / templat / email
Jika sistem email Anda (smtp, zend_mail) berfungsi dengan baik; menonaktifkan mailQueue dapat menyelesaikan masalah Anda.
/app/code/core/Mage/Core/Model/Email/Template.php
Ubah Baris 407
if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
untuk
if (false /\*$this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue\*/) {
Jika Anda memiliki ekstensi SMTPpro daripada mencoba untuk menonaktifkannya. Dan periksa lagi. Semua email berfungsi dengan baik dan Anda hanya perlu mengonfigurasi dengan benar.
Cara yang lebih baik adalah membuat salinan aplikasi / kode / inti / Penyihir / Inti / Model / Email / Templat / Mailer.php
Ke folder aplikasi / kode / lokal / Mage / Core / Model / Email / Templat / Mailer.php Anda
Kemudian komentari baris ini di baris 76
->setQueue($this->getQueue())
Lalu kamu selesai. Tidak perlu mengubah templat success.phtml. : D