Bestellbestätigungs-E-Mail nicht in Magento 2 senden

9

Ich installierte magento 2 auf meinem VPS - Server und konfiguriert speichern E - Mail wie diese

Eine Bestellbestätigungs-E-Mail wird jedoch nicht an die Kunden gesendet. Was soll ich tun? Sollte ich cron so einrichten, dass ein Link dazu empfohlen wird, oder sollte ich meinen Server wie diesen Link konfigurieren ? Was ist das Problem?

ali gh
quelle
Versuchen Sie es mit konfiguriertem Cron.
Dhiren Vasoya

Antworten:

14

Wenn Sie Magento 2-Mailing-Systeme ordnungsgemäß konfiguriert haben, müssen Sie möglicherweise den folgenden Punkt überprüfen:

  1. Müssen Stores -> Configuration -> Advanced -> System

Stellen Sie unter Mail-Sendeeinstellungen sicher, dass auf eingestellt Disable Email Communicationsist No. Überprüfen Sie auch Ihre Hostund PortFelder, wenn Sie einen externen Mailing-Server verwenden.

  1. Müssen Stores -> Configuration -> Sales -> Sales Emails

Unter Allgemeine Einstellungen Registerkarte wählen Asynchronous sendingzuDisable

Unter OrderRegisterkarte EnabledzuYes

Löschen / aktualisieren Sie jetzt Ihren Cache.

Hoffe das hilft dir. Diese Lösung wird mit Magento 2.1.0 getestet

Kamal Singh
quelle
1
Es gibt kein "asynchrones Senden"
Deepak Kamat
Welche Magento-Version verwenden Sie?
Kamal Singh
Es ist Magento / 2.2 (Community)
Deepak Kamat
Ich habe ein Problem in Magento 2.2.7
Pratik Mehta
funktioniert nicht mit 2.2.7
Navin Bhudiya
4

Das wird funktionieren.

Die transportbuilderbystore-Klasse wurde bereits in 2.3 veraltet und wird bald in 2.2 sein.

In Magento 2.2.7 behoben.

Fix: Vendor / Magento / Modulverkauf / Modell / Bestellung / E-Mail / SenderBuilder.php

ersetzen

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

mit

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

Hersteller / Magento / Framework / Mail / Vorlage / TransportBuilder.php

ersetzen

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

mit

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

und einfach so brauchen wir den TransportBuilderByStore nicht mehr und er funktioniert wie erwartet.

Pratik Mehta
quelle
1
funktioniert nicht, wenn ich diese Lösung verwendet habe E-Mail senden Stop
Navin Bhudiya
Überprüfen Sie dies. github.com/magento/magento2/issues/16355
Pratik Mehta
0

Ich hatte das gleiche Problem und stellte fest, dass das eigentliche Problem durch den "from" -Header verursacht wurde. Es wurde aus irgendeinem Grund zweimal eingestellt. Bitte aktualisieren Sie die folgende Datei, um dieses Problem zu beheben:

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

Zu

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
quelle
funktioniert diese Lösung nicht für mich 2.2.7
Navin Bhudiya