e-mail de confirmation de commande non envoyé dans magento 2


9

J'ai installé magento 2 sur mon serveur vps et configuré le courrier électronique du magasin comme celui-ci

mais l'e-mail de confirmation de commande n'enverra pas aux clients que dois-je faire, dois-je configurer cron comme un lien recommandé pour le faire ou dois-je configurer mon serveur comme ce lien quel est le problème?


Essayez avec cron configuré.
Dhiren Vasoya

Réponses:


14

Si vous avez correctement configuré les systèmes de messagerie Magento 2, vous devrez peut-être vérifier le point ci-dessous:

  1. Aller à Stores -> Configuration -> Advanced -> System

Sous Paramètres d'envoi de courrier, assurez-vous que la valeur Disable Email Communicationsest définie sur No. Vérifiez également vos champs Hostet Portsi vous utilisez un serveur de messagerie externe.

  1. Aller à Stores -> Configuration -> Sales -> Sales Emails

Sous l' onglet Paramètres généraux , choisissez Asynchronous sendingdeDisable

Sous l' Orderonglet EnabledpourYes

Maintenant, videz / rafraîchissez votre cache.

J'espère que cela vous aidera. Cette solution est testée avec Magento 2.1.0


1
Il n'y a pas "d'envoi asynchrone"
Deepak Kamat

Quelle est la version de magento que vous utilisez?
Kamal Singh

C'est Magento / 2.2 (Communauté)
Deepak Kamat

J'ai un problème dans Magento 2.2.7
Pratik Mehta

ne fonctionne pas avec 2.2.7
Navin Bhudiya

4

Cela fonctionnera.

La classe transportbuilderbystore a déjà été dépréciée en 2.3 et le sera bientôt en 2.2.

Corrigé dans Magento 2.2.7.

Correction: vendeur / magento / module-sales / Model / Order / Email / SenderBuilder.php

remplacer

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

avec

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

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

remplacer

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

avec

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

et juste comme ça, nous n'avons plus besoin de TransportBuilderByStore et cela fonctionne comme prévu.


1
ne fonctionne pas, si
j'utilise


0

J'ai eu le même problème et j'ai découvert que le problème réel était dû à l'en-tête "from". Il était réglé deux fois pour une raison quelconque. Veuillez mettre à jour le fichier ci-dessous pour résoudre ce problème:

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

À

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

ne fonctionne pas cette solution pour moi 2.2.7
Navin Bhudiya
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.