Verwendung des Events "mail.before.send" bei Kontaktformular Emails

Hallo Leute,

aktuell versuche ich einen Shopware 6 Shop mit einem Plugin auszustatten, welches die Email Adresse des Kunden als Absender für die Kontaktformular - Emails verwendet, damit man einfach auf antworten klicken kann um Kontakt mit dem Kunden aufzunehmen.

Ich habe verschiedene Events wie z.B. das contactFormEvent probiert, komme aber nirgendwo an die entsprechenden Daten heran.

Nun versuche ich das Event „mail.before.send“ (Klasse MailBeforeValidateEvent) zu verwenden, aber das scheint nicht auf dem selben Weg wie bei anderen events zu funktionieren. Hat jemand schonmal versucht dieses Event zu verwenden ?

public static function getSubscribedEvents(): array
    {
        return [
            MailBeforeValidateEvent::EVENT_NAME => 'onBeforeMailSend'
        ];
    }

    public function onBeforeMailSend(MailBeforeValidateEvent $mailSendEvent)
    {
        dd($mailSendEvent->getAvailableData());
        exit;
    }

Service XML

<service id="Extension\Subscriber\ContactFormSubscriber">
            <tag name="kernel.event_subscriber"/>
        </service>

Vermutlich übersehe ich hier etwas aber eigentlich sollte die Email nicht versendet, sondern meine Debug-Ausgabe ausgegeben werden, wenn ich den entsprechenden XHR-Request in der Netzwerk-Konsole des Browsers öffne, den dass Event wird ausgeführt bevor es zur Übergabe an die message-queue kommt.

Vielleicht weiß hier jemand weiter, vielen Dank.

1 „Gefällt mir“

Fast genau 3 Jahre später :smiley:
Aber für die Nachwelt, habe mich gerade mit genau demselben Problem ein paar Stunden herumgeschlagen.

Der Event hört nicht auf den Eventnamen, sondern auf die Klasse.
Also wie folgt abändern:

public static function getSubscribedEvents(): array
{
	return [
		MailBeforeValidateEvent::class => 'onBeforeMailSend'
	];
}
1 „Gefällt mir“