email xác nhận đặt hàng không gửi trong magento 2


9

Tôi đã cài đặt magento 2 trên máy chủ vps của mình và cấu hình email lưu trữ như thế này

nhưng email confitmation sẽ không gửi cho khách hàng tôi nên làm gì, tôi có nên thiết lập cron khi một số liên kết được đề xuất để làm điều này hay tôi nên cấu hình máy chủ của mình như liên kết này vấn đề là gì?


Hãy thử với cron được cấu hình.
Dhiren Vasoya

Câu trả lời:


14

Nếu bạn đã cấu hình đúng hệ thống gửi thư Magento 2, bạn có thể cần kiểm tra điểm dưới đây:

  1. Phải Stores -> Configuration -> Advanced -> System

Trong Cài đặt gửi thư, đảm bảo Disable Email Communicationsđược đặt thành No. Cũng xác minh của bạn HostPortcác trường nếu bạn đang sử dụng bất kỳ máy chủ gửi thư bên ngoài.

  1. Phải Stores -> Configuration -> Sales -> Sales Emails

Theo General Settings tab, chọn Asynchronous sendingđểDisable

Dưới Ordertab EnabledđểYes

Bây giờ xóa / làm mới bộ nhớ cache của bạn.

Hy vọng điều này sẽ giúp bạn. Giải pháp này được thử nghiệm với Magento 2.1.0


1
Không có "Gửi không đồng bộ"
Deepak Kamat

Phiên bản magento bạn đang sử dụng là gì?
Kamal Singh

Đó là Magento / 2.2 (Cộng đồng)
Deepak Kamat

Tôi có một vấn đề trong Magento 2.2.7
Pratik Mehta

không hoạt động với 2.2.7
Navin Bhudiya

4

Điều này sẽ làm việc.

Lớp Transportbuilderbystore đã bị từ chối trong 2.3 và sẽ sớm có trong 2.2.

Đã sửa lỗi trong Magento 2.2.7.

Khắc phục: nhà cung cấp / magento / mô-đun bán hàng / Mô hình / Đơn hàng / Email / Người gửiBuilder.php

thay thế

    $this->transportBuilderByStore->setFromByStore(
        $this->identityContainer->getEmailIdentity(),
        $this->identityContainer->getStore()->getId()
    );

với

    $this->transportBuilder->setFrom(
        $this->identityContainer->getEmailIdentity(), 
        $this->identityContainer->getStore()->getId()
    ); 

nhà cung cấp / magento / framework / Mail / Template / TransportBuilder.php

thay thế

/**
 * Set mail from address
 *
 * @param string|array $from
 * @return $this
 */
public function setFrom($from)
{
    $result = $this->_senderResolver->resolve($from);
    $this->message->setFrom($result['email'], $result['name']);
    return $this;
}

với

/**
 * Set mail from address
 *
 * @param string|array $from
 * @return $this
 */
public function setFrom($from, $store = null)
{
    $result = $this->_senderResolver->resolve($from, $store);
    $this->message->setFrom($result['email'], $result['name']);
    return $this;
}

và giống như vậy, chúng ta không cần TransportBuilderByStore nữa và nó hoạt động như mong đợi.


1
không hoạt động, nếu tôi sử dụng giải pháp gửi email dừng này
Navin Bhudiya


0

Tôi đã có cùng một vấn đề và thấy rằng vấn đề thực tế đã được gây ra do tiêu đề "từ". Nó đã được thiết lập hai lần bởi một số lý do. Vui lòng cập nhật tập tin dưới đây để giải quyết vấn đề này:

nhà cung cấp \ magento \ framework \ Mail \ Template \ TransportBuilderByStore

public function setFromByStore($from, $store)
{
    $result = $this->senderResolver->resolve($from, $store);
    $this->message->setFrom($result['email'], $result['name']);

    return $this;
}

Đến

public function setFromByStore($from, $store)
{
    $result = $this->senderResolver->resolve($from, $store);

    if ($this->message->getFrom()) {
        $this->message->clearFrom();
    }

    $this->message->setFrom($result['email'], $result['name']);

    return $this;
}

không làm việc với giải pháp này cho tôi 2.2.7
Navin Bhudiya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.