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?


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


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.


1
funktioniert nicht, wenn ich diese Lösung verwendet habe E-Mail senden Stop
Navin Bhudiya


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

funktioniert diese Lösung nicht für mich 2.2.7
Navin Bhudiya
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.