"Reply-To" Adresse des Kunden für Kontaktformular(e)

Moin Zusammen,

ich würde gerne die E-Mail-Adresse des Kunden als „Reply-To“-Adresse in die versendeten Kontaktmails eintragen.

Ich habe bereits einen eigenen FormController nebst eigener FormRoute (mit begleitendem CMS-Element) und FormValidationFactory implementiert, die unterschiedliche Kontaktformulare mit unterschiedlichen Feldern ermöglichen. Die Versendung geschieht weiterhin über das standard Kontaktformular. Das läuft alles wie gewünscht.

Allerdings finde ich keine Möglichkeit die „Reply-To“ Adresse „einzuschleusen“ :frowning:

Hat da wer eine Idee?

NACHTRAG: Ich bin noch auf 6.3.5.4

Besten Dank,
devnulroot

1 „Gefällt mir“

Warum ist das in nicht im Standard, da ist doch wichtig.

1 „Gefällt mir“

Das sollte reichen:

class FormSubscriber implements EventSubscriberInterface
{
  ...

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

  public function onMailBeforeValidateEvent(MailBeforeValidateEvent $event)
  {
    // Hier die Mails rausfiltern, für die das ReplyTo gesetzt werden soll
    ...
    // Aus $event->getTemplateData() die [ADRESSE_DES_KUNDEN] extrahieren
    ...
    $event->addData('replyTo', [ADRESSE_DES_KUNDEN]);
  }
  ...
}

Beste Grüße,
devnullroot

2 „Gefällt mir“

Das gleiche Verhalten passiert bei dem Kontaktformular und bei den Bestellbestätigungen. Die Reply-To Adresse ist nicht der Kunde, sondern die Shop-Absenderadresse. Erwarten würde man doch, dass die Reply-To auf die Kunden-Email gesetzt wird?

Ist das nicht als Bug im Bugtracker zu erfassen?

Viele Grüße

Hallo zusammen,

ich bin auch ein wenig sprachlos, dass so eine Selbstverständlichkeit noch fehlt … ein Ticket gibt es bereits: Shopware Issuetracker

Lasst uns das hochvoten …

Liebe Grüße aus Aschaffenburg
Carsten Sann
Der Essenzenladen

Hallo @devnullroot ,

vielen Dank für deinen Ansatz, damit gelingt es mir, via Plugin, für alle E-Mails die „Reply-To“-Adresse auf eine bestimmte E-Mail-Adresse zu setzen.

Kann mir jemand einen Hinweis geben, wie man

  1. ReplyTo nur bei Kontaktanfragen und Bestellbestätigungen setzt?
  2. An die E-Mail-Adresse des Kunden kommt? Bzw. an die E-Mail-Adresse, die im Kontaktformular angegeben wurde?

Viele Grüße

Moin @Laudenz,

2 steht schon in meiner Antwort oben (ok, vielleicht etwas verkürzt :crazy_face:) Die Mail-Adresse steht im MailBeforeValidateEvent:
$event->getTemplateData()['contactFormData']['email']

Zu 1 kann ich dir spontan leider nichts sagen, ich würde aber mal das Event durchforsten, ob da irgendwas zu finden ist und prüfen, ob Bestellbestätigungen überhaupt über diesen Event laufen.

Beste Grüße,
devnullroot

1 „Gefällt mir“

Hallo @devnullroot ,

vielen Dank für die schnelle Rückmeldung.

$event->getTemplateData()['contactFormData']['email']

funktioniert super!

Bei der Bestellbestätigung ReplyTo auf die Kunden E-Mail-Adresse zu setzen ergibt natürlich kein Sinn, sonst würde der Kunde sich selbst antworten, wenn er Rückfragen zur Bestellung hat.
Hatte da einen Denkfehler.

Ich prüfe jetzt einfach, ob

$event->getTemplateData()[‚contactFormData‘][‚email‘]

einen Wert hat. Falls das true ist, setze ich ReplyTo. So habe ich es gelöst, damit ReplyTo nur beim Kontaktformular gesetzt wird.

Viele Grüße

Leider doch noch nicht so möglich, wie von vielen gewünscht. Anpassungen im Bereich von reply-to werden vermutlich mit der 6.5. erscheinen.

Hallo zusammen,

mittlerweile ist es möglich, dass innerhalb des Flows zum Kontaktformular als Absender „Anfragesteller“ ausgewählt werden kann.

Viele Grüße

2 „Gefällt mir“

Hallo,

für das Bestellformular wurde das leider nicht umgesetzt, oder?
Hier wäre ein zusätzlicher replay-to Header ebenfalls sehr sinnvoll.

Grüße

Hallo,

wenn ich unter Andere Absender-Adresse verwenden „Anfragensteller“ auswähle erscheint in den Logs die folgende Fehlermeldung wenn jemand das Kontaktformular abschickt.
Das Formular wird dann auch nicht zugestellt.

[2024-05-21T10:13:22.324563+00:00] app.ERROR: Could not send mail: Failed sending mail to following recipients: {{ recipients }} with Error: Expected response code „250/251/252“ but got code „550“, with message „550 5.7.23 max.mustermann@gmx.de: Sender address rejected: Message rejected due to: SPF fail - not authorized. Sender not authorized SPF: Introduction“. Error Code:0 Template data: {„recipients“:{„service@test-shop.de:"service@test-shop.de"},„senderName“:„{% if contactFormData.firstName is defined %}{{ contactFormData.firstName }}{% endif %} {% if contactFormData.lastName is defined %}{{ contactFormData.lastName }}{% endif %}“,„salesChannelId“:„66a879d7720b451a9b573bb5a9f24d82“,„templateId“:„e2ddd75175ed4f428c7a26053f2d57f3“,„customFields“:null,„contentHtml“:„<div style="font-family:arial; font-size:12px;">\n

\n Folgende Nachricht wurde an Sie via Kontakt-Formular gesendet.<br/>\n <br/>\n Name:</b> {{ contactFormData.firstName }} {{ contactFormData.lastName }}\n <br/>\n Kontakt E-Mail:</b> {{ contactFormData.email }}<br/>\n
\n Telefonnummer:</b> {{ contactFormData.phone }}<br/>\n <br/>\n Betreff:</b> {{ contactFormData.subject }}<br/>\n <br/>\n Nachricht:</b><br/>\n {{ contactFormData.comment|nl2br }}<br/>\n </p>\n</div>\n“,„contentPlain“:„Folgende Nachricht wurde an Sie via Kontakt-Formular gesendet.\n\nName: {{ contactFormData.firstName }} {{ contactFormData.lastName }}\nKontakt E-Mail: {{ contactFormData.email }}\n\nTelefonnummer: {{ contactFormData.phone }}\n\nBetreff: {{ contactFormData.subject }}\n\nNachricht:\n{{ contactFormData.comment }}\n“,„subject“:„Anfrage: {{ contactFormData.subject }} - TEST Shop“,„mediaIds“:,„attachmentsConfig“:{},„senderMail":"max.mustermann@gmx.de“}

Kann man das irgendwie umgehen?

Beste Grüße
Matthias

Hi,

ohne den reply-to Wert zu modifizieren kann das so nicht funktionieren.

max.mustermann@gmx.de: Sender address rejected: Message rejected due to: SPF fail - not authorized“ bedeutet, dass Dein Server halt nicht für den Versand von emails der Domain @gmx.de authorisiert ist, sprich wird als Spam abgewiesen.

Viele Grüße

Danke für die Antwort.
So wie ich es verstehe kann ich ja dann auch nicht einfach alle Mail Adressen als Absender auf unserem Mail Server zulassen.

Bietet Shopware denn die Möglichkeit eine „Antwort an“ Adresse dynamisch für das Kontaktformular zu setzen?

Bei den Bestellbestätigungen scheint das ja automatisch zu funktionieren.

Beste Grüße
Matthias

Die vorherige Antwort sollte helfen:

Das bedeutet, die Absenderadresse auf „Anfragesteller“ umzustellen, hat überhaupt keinen Nutzen und schadet sogar. Diese Einstellung ist also komplett überflüssig.

Warum nicht einfach Reply-To verwenden, so wie jedes andere Formular-System auch?!