2014-12-12 46 views
12

Gần đây tôi đã nâng cấp lên Magento CE 1.9.1.0 và email xác nhận đơn đặt hàng của chúng tôi không được gửi tới khách hàng hoặc nhân viên ở đây được thiết lập để nhận thông báo.Magento 1.9.1.0 Email xác nhận đơn đặt hàng - Không gửi

Tôi đã kiểm tra Nhật ký email và không thấy email nào chạm vào máy chủ.

Email đến từ Biểu mẫu liên hệ, Đăng ký tài khoản người dùng mới và một vài tập lệnh thử nghiệm mà tôi đã tạo trên máy chủ. Tôi đảm bảo rằng Disable Email Communications được đặt thành "Không".

Bất kỳ ý tưởng nào? Họ đã làm việc rất tốt trong 1.7.0.2 trước khi chúng tôi nâng cấp.

+1

Câu hỏi này có vẻ ngoài chủ đề vì nó không phải là về lập trình. Bạn nên đăng nó trên trang web chị em tràn Overflow https://magento.stackexchange.com/. – Enigmativity

Trả lời

14

Bắt đầu từ Magento 1.9 các email xác nhận đơn hàng không được gửi trong thanh toán nữa, thay vào đó họ được gửi với Cron. Để xác minh việc này đúng:

  • chắc chắn rằng hệ thống của bạn Cron là lên và chạy (bạn có thể kiểm tra các bản ghi Cron: /var/log/cron để xác minh rằng).

  • đảm bảo rằng Magento Cron được thiết lập chính xác và hoạt động sau mỗi vài phút. Bạn sẽ thấy một cái gì đó như thế này trong Crontab của hệ thống của bạn:

    */5 * * * * /public_html/cron.sh

    lịch này là một nhiệm vụ để chạy cron.sh mỗi phút năm. (More reading)

Có phần mở rộng tốt như AOE Scheduler trong Magento giúp bạn giám sát và quản lý công việc Cron.


Một cách khác để điều này là vô hiệu hóa các Cron cho các loại email (để xác nhận). Để làm điều này bạn có thể đi đến con đường này:

public_html/app/code/core/Mage/Sales/Model/Order.php 

Sao chép tập tin đó và đưa nó vào con đường này (nếu đường dẫn không tồn tại tạo ra nó):

public_html/app/code/local/Mage/Sales/Model/Order.php 

Và sau đó thay đổi dòng này :

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

Để:

$mailer->send(); 

Tuy nhiên, tôi khuyên bạn nên dành thời gian để thiết lập Cron thay thế. Tôi nghĩ nếu họ muốn sử dụng Cron cho những email này thì đó là lý do.

+2

Cảm ơn bạn đã chỉ cho tôi đúng hướng. Các cron đã thực sự không được thiết lập đúng. Tôi đã phải thêm "$ isShellDisabled = true;" vào tệp cron.php vì nó có vẻ là một lỗi. Tìm thấy mẹo đó trên một trang web khác. –

0

Tôi đã gặp sự cố tương tự. Đối với tôi đó là một bản sao cục bộ của order.php mà tôi đã thực hiện một số thay đổi trong quá khứ và rằng tôi đã sao chép vào \ app \ code \ local \ Mage \ Sales \ Model \ Order.php.

Do đó, order.php cập nhật của Magento 1.9.1.0 trong thư mục lõi không được sử dụng - khiến email xác nhận đơn đặt hàng không được gửi tự động qua công việc cron.

Tôi giữ các ngón tay gạch chéo mà bạn gặp phải vấn đề tương tự.

1

giải pháp nhanh là:

Đến vị trí sau: /app/code/core/Mage/Core/Model/Email/Template.php

Thay đổi dòng 407

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

Để:

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

Nó sẽ làm việc.

Cảm ơn Pankaj

+1

làm điều này đã ném một lỗi nghiêm trọng về tôi liên quan đến dòng 410 – TT120

13

Chỉ cần làm một sự thay đổi nhỏ trong order.php (public_html/app/code/core/Mage/Sales/Model/Order.php)

Từ

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

Để

$mailer->send(); 
+0

CẢM ƠN, đã cố gắng giải quyết vấn đề này trong nhiều ngày nay. –

0

Chỉ cần thêm cron trong cpanel hoặc Plesk panel . Nó sẽ có sẵn trên cPanel -> Advanced và nhấn vào thư mục cron. Sau đó tiến hành:

  • */5 trong lĩnh vực 'phút' (có thể tùy chỉnh này)
  • * trong 'giờ' lĩnh vực
  • * trong 'ngày' lĩnh vực
  • * trong 'tháng' lĩnh vực
  • * trong 'tuần' lĩnh vực

bình luận: http://www.yoursite.com/absolute/path/to/magento/cron.php

0

Có nhiều câu trả lời nhưng không có câu trả lời nào phù hợp với tôi. Cách tôi giải quyết là, kiểm tra xem thiết lập mẫu mặc định của bạn có trong Magento hay không. Đôi khi trong quá trình cài đặt của nó bị mất và thực sự "không có mẫu email theo mặc định trong hệ thống để gửi email của bạn". Vui lòng chuyển đến phía Quản trị viên, System->Transactional Email-> theo mặc định, bạn sẽ không tìm thấy mẫu nào ở đây. Vì vậy, hãy thêm một bằng cách nhấp vào nút 'Add new Email template. Trong bảng điều khiển Load default template chọn một mẫu từ trình đơn thả xuống Mẫu giả sử quên Mật khẩu và nhấp vào và nhấp vào Load Template. Như đã nói trước đó không có mẫu email nào được liên kết với nó nên nó sẽ không được hiển thị bên dưới. Điều bset là phải cài đặt một bản sao mới của Magento trong hệ thống cục bộ của bạn điều hướng ở đây và đặt cùng một nội dung ở đây và nhấp vào nút Lưu mẫu. Sau đó, hãy truy cập vào System->Configuration->Customer Configuration ->Password Options->Change danh sách thả xuống 'Quên Email Mẫu' của bạn như đã thêm ở trên. do đó điều tương tự bạn cũng có thể làm cho đơn đặt hàng, giao hàng, tài khoản mới, v.v.

6

Giải pháp đơn giản mà tôi đã tìm thấy.

go to System -> Configuration -> ASCHRODER EXTENSIONS -> SMTP -> Queue Configuration -> Queue Usage -> Never 

Xong!

Đặt hàng Xác nhận sẽ được gửi nhanh chóng.:)

0

Để gỡ lỗi vấn đề thư đặt hàng magento liên quan đến đơn đặt hàng mới, chỉ cần chạy yoursite.com/cron.php Nếu bạn nhận được bất kỳ thư nào lúc này thì vấn đề cron của nó. Bạn có thể khắc phục vấn đề con bằng cách đặt cron trong cPanel.

0

Vui lòng ghi đè tệp 'app/code/core/Mage/Sales/Model/Order.php' nếu bạn không muốn bất kỳ thay đổi nào trong tệp xml do đó, chỉ cần sao chép/app/code/core/Mage/Sales/Model/Order.php vào /app/code/local/Mage/Sales/Model/Order.php và đảm bảo làm mới bộ nhớ cache. và thay đổi

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

Để

$mailer->send(); 
+3

không bao giờ ghi đè lên các tệp lõi – TT120

1

Chuyển đến /app/code/core/Mage/Core/Model/Email/Template.php

Dưới đây thay đổi:

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

Để

if (false){ 
+0

typo: '/ app/code/core/Mage/Core/Model/Email/Template.php' –

Các vấn đề liên quan