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“
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]);
}
...
}
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?
2 steht schon in meiner Antwort oben (ok, vielleicht etwas verkürzt ) 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.
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.
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“}
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.
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?!