correo electrónico de confirmación del pedido no enviado en magento 2

9

Instalé magento 2 en mi servidor vps y configuré el correo electrónico de la tienda de esta manera

pero el correo electrónico de confirmación del pedido no enviará a los clientes qué debo hacer, ¿debo configurar cron como algún enlace recomendado para hacerlo o debo configurar mi servidor como este enlace? ¿ Cuál es el problema?

Ali GH
fuente
Prueba con cron configurado.
Dhiren Vasoya

Respuestas:

14

Si ha configurado correctamente los sistemas de correo Magento 2, es posible que deba verificar el siguiente punto:

  1. Tengo que Stores -> Configuration -> Advanced -> System

En Configuración de envío de correo, asegúrese de que Disable Email Communicationsesté configurado en No. Verifique también sus campos Hosty Portsi está utilizando un servidor de correo externo.

  1. Tengo que Stores -> Configuration -> Sales -> Sales Emails

Bajo Configuración general ficha, elegir Asynchronous sendingaDisable

Bajo Orderla pestaña EnableddeYes

Ahora borra / actualiza tu caché.

Espero que esto te ayude. Esta solución se prueba con Magento 2.1.0

Kamal Singh
fuente
1
No hay "envío asincrónico"
Deepak Kamat
¿Cuál es la versión de magento que estás usando?
Kamal Singh
It's Magento / 2.2 (Comunidad)
Deepak Kamat
Tengo un problema en Magento 2.2.7
Pratik Mehta
no funciona con 2.2.7
Navin Bhudiya
4

Esto funcionará

La clase transportbuilderbystore ya ha quedado en desuso en 2.3 y pronto estará en 2.2.

Solucionado en Magento 2.2.7.

Solución: vendor / magento / module-sales / Model / Order / Email / SenderBuilder.php

reemplazar

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

con

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

vendor / magento / framework / Mail / Template / TransportBuilder.php

reemplazar

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

con

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

y así, ya no necesitamos TransportBuilderByStore y funciona como se esperaba.

Pratik Mehta
fuente
1
no funciona, si utilizo esta solución de envío de correo electrónico detener
Navin Bhudiya
0

Tuve el mismo problema y descubrí que el problema real fue causado por el encabezado "from". Fue establecido dos veces por alguna razón. Actualice el archivo a continuación para resolver este problema:

proveedor \ 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;
}

A

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;
}
Himmat Paliwal
fuente
no funciona esta solución para mí 2.2.7
Navin Bhudiya