электронное письмо с подтверждением заказа не отправлено в magento 2

9

Я установил magento 2 на свой сервер VPS и настроил магазин электронной почты, как это

но письмо с подтверждением заказа не будет отправлять клиентам то, что я должен делать, должен ли я установить cron, как рекомендовано для этого какой-либо ссылкой, или я должен настроить свой сервер, как эта ссылка, в чем проблема?

али гх
источник
Попробуйте с настроенным cron.
Дирен Васоя

Ответы:

14

Если вы правильно настроили почтовые системы Magento 2, вам может потребоваться проверить ниже:

  1. Должен Stores -> Configuration -> Advanced -> System

В разделе Настройки отправки почты убедитесь, что Disable Email Communicationsустановлено значение No. Также проверьте ваше Hostи Portполе , если вы используете какой - либо внешний сервер рассылки.

  1. Должен Stores -> Configuration -> Sales -> Sales Emails

В разделе Общие настройки вкладки, выберите Asynchronous sendingвDisable

При Orderзакладке EnabledвYes

Теперь очистите / обновите ваш кеш.

Надеюсь, это поможет вам. Это решение протестировано с Magento 2.1.0

Камаль Сингх
источник
1
«Асинхронной отправки» не существует
Дипак Камат
Какую версию magento вы используете?
Камаль Сингх
Это Magento / 2.2 (Сообщество)
Дипак Камат
У меня есть проблема в Magento 2.2.7
Pratik Mehta
не работает с 2.2.7
Навин Бхудия
4

Это будет работать

Класс transportbuilderbystore уже устарел в 2.3 и скоро будет в 2.2.

Исправлено в Magento 2.2.7.

Исправлено: поставщик / magento / module-sales / Модель / Заказ / Электронная почта / SenderBuilder.php

замещать

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

с

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

продавец / Magento / рамки / Почта / Шаблон / TransportBuilder.php

замещать

/**
 * 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;
}

с

/**
 * 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;
}

и просто так нам больше не нужен TransportBuilderByStore, и он работает как положено.

Пратик Мехта
источник
1
не работает, если я воспользовался этим решением, остановка отправки электронной почты
Навин Бхудия
Проверь это. github.com/magento/magento2/issues/16355
Пратик Мехта
0

У меня была та же проблема, и я обнаружил, что настоящая проблема была вызвана заголовком «from». Это было установлено дважды по какой-то причине. Пожалуйста, обновите файл ниже, чтобы решить эту проблему:

поставщик \ Magento \ рамки \ почта \ Template \ TransportBuilderByStore

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

    return $this;
}

к

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;
}
Химмат Паливал
источник
не работает это решение для меня 2.2.7
Навин Бхудия