Konfirmasi email pesanan baru tidak dikirim

100

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.

pengguna16826
sumber

Jawaban:

96
  1. Dimulai dengan Magento 1.9.1 email tidak dikirim langsung saat checkout tetapi sebaliknya sedang antri.
  2. Antrian sedang diproses melalui cronjob Magento Anda - harap pastikan ini telah disiapkan dan berjalan dengan benar.
  3. Ekstensi AOE_Scheduler dapat membantu Anda mengonfirmasi bahwa cronjob Magento Anda telah dikonfigurasikan dengan benar dan sedang berjalan.
Kristof di Fooman
sumber
6
Pastikan cron.shsudah berjalan! Kami hanya menghabiskan sehari penuh men-debug ini hanya untuk mengetahui bahwa cron salah konfigurasi.
forsvunnet
2
bagaimana cara mengetahui apakah cron.php berfungsi atau tidak?
Teja Bhagavan Kollepara
2
Anda dapat melacak log di dalam / var / log / cron
Beto Castillo
Saya memiliki masalah dengan email pesanan di Magento 2. Cron juga berjalan tetapi surat tidak terkirim. Sebagian besar tugas cron tidak terjawab dalam tabel database. Bagaimana saya bisa mengatasinya?
Magecode
@ Kode Kode Saya sarankan mencari pertanyaan khusus Magento 2 terlebih dahulu. Jika tidak ada yang merasa ragu untuk menambahkan pertanyaan Anda sendiri dengan perincian tentang apa yang Anda temukan / singkirkan sejauh ini.
Kristof di Fooman
29

Ada 2 metode untuk mengirim surat dari toko Magento 1 kami.

  1. Dengan Menggunakan cron
  2. Dengan Menghindari cron

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
Teja Bhagavan Kollepara
sumber
berfungsi dengan baik, apakah itu perlu untuk menambahkan kode pada success.phtml becoz tanpa itu tampaknya berfungsi dengan baik
Suneth Kalhara
3
Halo, Senang mendengarkan ini. Tidak perlu menambahkan kode apa pun karena surat transaksional akan segera sampai ke email.
Teja Bhagavan Kollepara
1
Jangan pernah mengubah (atau menimpa, dalam hal ini) kode vendor - apa yang terjadi ketika Anda memutakhirkan?
Bachi
20

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;
    }
Helmey Hussain
sumber
Metode ini memecahkan masalah, tetapi berlangganan buletin tidak berfungsi. Kembali ke templat.php yang lama memecahkan masalah berlangganan surat kabar.
balajisoundar
14

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
matinict
sumber
10

Dengan Magento 1.9 semua email akan diantrekan dan kemudian dikirim melalui Cron.

Catatan Rilis Magento 1.9

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.

Ajay Bisht
sumber
10

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:

Edit cron.php di direktori root Magento

Setelah:

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

tambahkan baris kode ini:

$isShellDisabled = true;

Siapkan Pekerjaan Cron

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
Jagoman
sumber
Penting untuk dicatat bahwa dengan SMTP Pro konfigurasi ini harus dilakukan untuk Magento 1.9.1 dan di atasnya: Sistem -> Konfigurasi -> SMTP Pro -> Konfigurasi Antrian -> Perubahan Penggunaan Antrian dari Default menjadi Tidak Pernah.
Shrenik
8

Di Magento 1.9.1.0, Magento telah menambahkan fitur baru: Mereka menyimpan email pesanan di core_email_queuetabel untuk mengirim email pesanan. Kita harus mengatur cron.phpserver di

The cron.phpberkas mengatur core_email_queue_send_alldalam 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.

Ankita Pancholi
sumber
6

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.

Akhil Gupta
sumber
6

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.

Timon de Groot
sumber
6

untuk server godaddy gunakan kode berikut saat menyiapkan cronjob:

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

Ini akan berjalan setiap menit.masukkan deskripsi gambar di sini

alok
sumber
5

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.

Aidan
sumber
5

Saya memiliki masalah yang sama dan menemukan bahwa itu terkait dengan perpanjangan. Lampiran Email Fooman kini telah diperbarui ke v0.10.4. Versi di bawah v0.10.3 tidak akan berfungsi dengan Magento 1.9.

loeffel
sumber
5

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

Uncle_Paul
sumber
2
Selamat Datang di Magento SE! Bisakah Anda menguraikan jawaban Anda lebih jauh (menawarkan contoh kode, dll.)?
patokan
3

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\*/) {
pengguna20329
sumber
5
ini merusak fungsionalitas formulir kontak.
Zoya
9
Jangan edit inti
Kevin Schroeder
1
Tolong jangan memberikan solusi yang membutuhkan perubahan CORE. Kelas inti tidak boleh diubah.
Ahsan Horani
2

Jika Anda memiliki ekstensi SMTPpro daripada mencoba untuk menonaktifkannya. Dan periksa lagi. Semua email berfungsi dengan baik dan Anda hanya perlu mengonfigurasi dengan benar.

Pengembang Webile
sumber
0

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

jehzlau
sumber