E-Mails Reply-To Header

Gibt es mittlerweile die Möglichkeit, den Reply-To Header bei E-Mails zu setzen?

Unsere Bestellabwicklung muss jedes Mal in das Shopware Backend, nur um die E-Mail des Kunden rauszusuchen. Bisher konnten wir einfach auf die E-Mail für eine neue Bestellung antworten.

Kann doch nicht sein, dass man für so eine Standard-Funktionalität ein Plugin braucht?!

1 „Gefällt mir“

Du meinst das, oder? Reply directly to a contact form – Have an idea? Share it!

Nein, wie geschrieben meine ich E-Mails von Bestellungen:

Unsere Bestellabwicklung muss jedes Mal in das Shopware Backend, nur um die E-Mail des Kunden rauszusuchen. Bisher konnten wir einfach auf die E-Mail für eine neue Bestellung antworten.

Also E-Mails, die über einen Flow ausgelöst werden. Ich hoffe das ist jetzt verständlicher.

Bei uns funktionierts unter Outlook mit „Allen Antworten“ ohne Probleme. Einfaches „Antworten“ würde an uns selbst gesendet werden.

Gibt es dazu schon eine Lösung?
Ziel: Bestellbestätigung wird von der „info@“ gesendet, antwortet der Kunde auf diese E-Mail, soll die E-Mail an die „service@“ geschickt werden.

Wenn es jemand probieren möchte, ich hab ein kleines Plugin, das den Reply To bei Kontaktanfragen und Bestellmails auf den Kunden setzt, könnte man auch anpassen, um eine andere Antwortadresse in der Mail an den Kunden zu setzen.

Eine schnelle Möglichkeit ohne Plugin wäre die E-Mail im Mailtext mitauszugeben:

Bestellnummer: 123456
E-Mail: test@test.de

Dann kann man per Copy&Paste die Adresse rauskopieren und beim Antworten wieder einfügen. Dürfte jetzt nicht arg viel langsamer sein, als das „direkte“ Antworten.

Ihr könnt gerne für diese Vorschlag stimmen, mir fehlt nämlich auch die Flexibilität beim E-Mail Versand per Flow

3 „Gefällt mir“

Abgestimmt. Nervt mich auch, dass das fehlt.

Hallo Anotherone,
das würde uns schon sehr interessieren.
Kann eigentlich nicht sein, dass man alternativ nur die Mailadresse des Kunden als Absender eintragen kann. Da springt bei uns direkt der Spamfilter an.

Gruß, Klogges

Abgestimmt.fehlt absolout :smiling_face: :innocent: :blush:

Hallo @Anotherone wir hätten auch großes Interesse an solch einer Funktion. Das fehlende Reply-To behindert auch uns bei der täglichen Arbeit. Bitte gerne melden! Danke vorab

Ich habe mir einen kleinen Subscriber geschrieben, der das Event des Kontaktformularversands abpasst und sofern vorhanden die E-Mail des Kunden als ReplyTo einsetzt.
Funktioniert bei uns hervorragend. Natürlich keine Garantie, dass es mit allen möglichen Plugins kompatibel ist und in jeder Konstellation läuft — use at your own risk :wink:

use Shopware\Core\Content\MailTemplate\Service\Event\MailBeforeValidateEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mime\Address;

class ContactFormSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
MailBeforeValidateEvent::class => ‚onMailBeforeValidateEvent‘,
];
}
public function onMailBeforeValidateEvent(MailBeforeValidateEvent $event): void
{
if (empty($event->getTemplateData()) || !is_array($event->getTemplateData()) || !array_key_exists(‚eventName‘, $event->getTemplateData()) || empty($event->getTemplateData()[‚eventName‘]) || $event->getTemplateData()[‚eventName‘]!=‚contact_form.send‘) {
return;
}
$data = $event->getTemplateData();
$customerEmail = $data[‚contactFormData‘][‚email‘] ?? null;
if ($customerEmail && filter_var($customerEmail, FILTER_VALIDATE_EMAIL)) {
$event->addData(‚replyTo‘, $customerEmail);
}
}
}
1 „Gefällt mir“

Hier ist meine Version:

class MailReplyToSubscriber implements EventSubscriberInterface
{

    public static function getSubscribedEvents(): array
    {
        return [
            FlowSendMailActionEvent::class => ['onFlowSendMailAction'],
        ];
    }

    public function onFlowSendMailAction(FlowSendMailActionEvent $event): void
    {
        $flow = $event->getStorableFlow();
        if ($flow->getName() == 'checkout.order.placed') {
            $config = $flow->getConfig();
            if (array_key_exists('recipient', $config)
                && array_key_exists('type', $config['recipient'])
                && $config['recipient']['type'] == 'admin') {
                $order = $flow->getData('order');
                if ($order instanceof OrderEntity) {
                    $customer = $order->getOrderCustomer();
                    if ($customer instanceof OrderCustomerEntity) {
                        // customer as reply to
                        $event->getDataBag()->set('replyTo', $customer->getEmail());
                    }
                }
            }
        } elseif ($flow->getName() == 'contact_form.send') {
            $contactForm = $flow->getData(FlowMailVariables::CONTACT_FORM_DATA, []);
            if (!empty($contactForm) && array_key_exists('email', $contactForm) && !empty($contactForm['email'])) {
                // customer as reply to
                $event->getDataBag()->set('replyTo', $contactForm['email']);
                // reset sender (will be loaded automatically from config)
                $event->getDataBag()->set('senderMail', null);
            }
        }
    }
}
2 „Gefällt mir“

Super, vielen lieben Dank!

wo müste das den hin ???

Wenn Du ein eigenes Theme nutzt, kannst Du den Subscriber über die src/Resources/config/services.xml laden:
<service id="[Dein Theme Namespace]\Subscriber\ContactFormSubscriber">
<tag name="kernel.event_subscriber"/>
</service>

Und im diesen im entsprechenden Pfad hinterlegen.

Oder eben über ein eigenes Plugin. Das zu erläutern wär hier etwas viel.
Anleitung hier: Plugin Base Guide | Shopware Documentation