email de confirmação do pedido não enviado no magento 2


9

Instalei o magento 2 no meu servidor vps e configurei o email da loja como este

mas o email de confirmação de pedido não enviará aos clientes o que devo fazer, devo configurar o cron como um link recomendado para isso ou devo configurar meu servidor como esse link qual é o problema?


Tente com o cron configurado.
Dhiren Vasoya

Respostas:


14

Se você configurou corretamente os sistemas de correio Magento 2, pode ser necessário verificar o ponto abaixo:

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

Em Configurações de envio de email, verifique se Disable Email Communicationsestá definido como No. Verifique também seus campos Hoste Portse estiver usando algum servidor de correspondência externo.

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

Sob Configurações Geral guia, escolha Asynchronous sendingaDisable

Na Orderguia EnabledparaYes

Agora limpe / atualize seu cache.

Espero que isso ajude você. Esta solução foi testada com o Magento 2.1.0


11
Não há "envio assíncrono"
Deepak Kamat 5/10

Qual é a versão magento que você está usando?
Kamal Singh

É Magento / 2.2 (Comunidade)
Deepak Kamat

Eu tenho um problema no Magento 2.2.7
Pratik Mehta

não funciona com 2.2.7
Navin Bhudiya 28/02/19

4

Isso vai funcionar.

A classe transportbuilderbystore já foi descontinuada na versão 2.3 e em breve estará na versão 2.2.

Corrigido no Magento 2.2.7.

Correção: vendor / magento / module-sales / Model / Order / Email / SenderBuilder.php

substituir

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

com

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

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

substituir

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

com

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

e, assim, não precisamos mais do TransportBuilderByStore e ele funciona como esperado.


11
não funciona, se eu usei esta solução e-mail enviando parada
Navin Bhudiya


0

Eu tive o mesmo problema e constatei que o problema real foi causado por causa do cabeçalho "de". Estava sendo definido duas vezes por algum motivo. Atualize o arquivo abaixo para resolver este problema:

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

Para

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

não está funcionando esta solução para mim 2.2.7
Navin Bhudiya 28/02/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.