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?

ali gh
fonte
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

Kamal Singh
fonte
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.

Pratik Mehta
fonte
11
não funciona, se eu usei esta solução e-mail enviando parada
Navin Bhudiya
Verifique isso. github.com/magento/magento2/issues/16355
Pratik Mehta
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;
}
Himmat Paliwal
fonte
não está funcionando esta solução para mim 2.2.7
Navin Bhudiya 28/02/19