Guten Abend zusammen, Mein System sendet bereits korrekt E-Mails in folgenden Fällen: Front-End: - Registrierung - Passwort vergessen - Bestellen (Bestellbestätigung, sowohl an den Betreiber als auch an den Kunden) - Reparatur-Formular Backend: - “Testmail an Shopbetreiber” aus den E-Mail-Vorlagen Was seltsamerweise nicht funktioniert, ist - das Kontaktformular - das Weiterempfehlungsformular - das Formular, um eine Anfrage zu einem Produkt zu stellen (Anfrageformular). Die “fehlerhaften” Formulare funktionieren nur, wenn ich als Absender die E-Mail-Adresse des Shopbetreibers hinterlege, was natürlich keinen Sinn macht: - die Kontaktanfrage landet im Postfach des Shopbetreibers (Absender ist logischerweise dann der Shopbetreiber selbst) - die Weiterempfehlung wird an den richtigen Adressaten übermittelt (ohne Nennung der E-Mail-Adresse des Empfehlenden) Gibt ein Kunde seine eigene E-Mail-Adresse ein, erscheint eine Zend-Exception: 5.7.1 : Sender address rejected: not owned by user shop@meinedomain.de
Die Information, dass es sich um die E-Mail-Adresse kunde@kundendomain.de als Sender handelt, konnte ich erst sehen, als ich mittels firephp und Debug-Modul den Fehler reproduzierte. Shopware selbst gibt nur “Sender address rejected” aus:
5.7.1 : Sender address rejected: not owned by user shop@meinedomain.de in Zend\Mail\Protocol\Abstract.php on line 431
Stack trace:
#0 Zend\Mail\Protocol\Smtp.php(289): Zend_Mail_Protocol_Abstract->_expect(Array, 300)
#1 Zend\Mail\Transport\Smtp.php(211): Zend_Mail_Protocol_Smtp->rcpt('shop@meinedomain.d...')
#2 Zend\Mail\Transport\Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#3 Zend\Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Enlight_Components_Mail))
#4 Shopware/Controllers\Frontend\Forms.php(282): Zend_Mail->send()
#5 Shopware/Controllers\Frontend\Forms.php(164): Shopware_Controllers_Frontend_Forms->commitForm()
#6 Enlight\Controller\Action.php(135): Shopware_Controllers_Frontend_Forms->indexAction()
#7 Enlight\Controller\Dispatcher\Default.php(521): Enlight_Controller_Action->dispatch('indexAction')
#8 Enlight\Controller\Front.php(214): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#9 Shopware/Bootstrap.php(79): Enlight_Controller_Front->dispatch()
#10 Enlight\Application.php(192): Shopware_Bootstrap->run()
#11 shopware.php(74): Enlight_Application->run()
#12 {main}
Meine Entwicklungsumgebung ist dieses Mal jedoch nicht uwamp, sondern Shopware läuft lokal ungebundled als v. 4.05 (Update + mySQL-Updateskript auf 4.04-Export der Datenbank aus dem uwamp-Paket), falls das von Bedeutung sein könnte.
Muss mich korrigieren: Auch in der Datenbanktabelle s_core_log wird die volle Exception ausgegeben, in der es heißt, dass die jeweilige E-Mail-Adresse (des Kunden) als Senderadresse nicht verwendet werden kann, weil sie dem User „shop@meinedomain.de“ nicht gehört. Kann das ein Bug der neuen Version 4.05 sein? An welcher Stelle müsste ich denn nachschauen, ob/warum z.B. im Kontaktformular die E-Mail-Adresse des Kunden als „Sender“ verwendet wird?
Hallo, das ist doch kein Bug, wenn du deine eMail-Adresse nicht einträgst! Schau mal unter Inhalte / Formulare Die Meldung sagt ja nur, das die Email Adresse nicht existiert
Das Problem ist, dass Shopware meint, die vom Kunden eingegebene E-Mail-Adresse nicht zu “besitzen”. Jedenfalls steht ja oben in der Exception explizit die E-Mail-Adresse des Verwenders. shop@meinedomain.de soll eine E-Mail an info@meinedomain.de senden. shop@meinedomain.de ist in den Grundeinstellungen (Mailer) eingerichtet. Ich denke, dies ist die einzige notwendige E-Mail-Adresse, die der Shop als versendende E-Mail-Adresse verwendet, richtig? Und im Formular (s. Bild) ist die Zieladresse, um die Mails an verschiedene Abteilungen zu senden.
Hallo, du versendest ja per Smtp und da wird die Adesse nicht akzeptiert. Also das hat nichts direkt mit Shopware zu tun. Bei vielen Hostern ist es sogar verboten oder gar nicht möglich andere Adresse einzusetzen. (Spamschutz z.B.) Versuch da mal wirklich die eine verfügbare Adresse zu definieren, die identisch mit der Shopdomain ist. Alternativ kannst du mal versuchen statt smtp die Methode Mail zu nutzen.
Hallo Harald, vielen Dank für Deine Antwort. Ich verstehe erst jetzt, nachdem ich den Shop mit einer Testadresse von Arcor.de geprüft habe, dass die E-Mail-Adressen, die ein Kunde in die obigen Formulare eingibt, tatsächlich als Absender-Adressen verwendet werden. Ich dachte, dass diese Adressen lediglich im Nachrichtentext vorkommen, wie z.B. auch beim Reparatur-Formular. Anscheinend erlaubt es mein eigener Postfix nicht, Mails „im Namen“ dieser E-Mail-Adressen zu versenden. So wie ich das verstehe, muss ich an der Postfix-Konfiguration Änderungen vornehmen, die so ein Verhalten gestatten und zugleich genug Sicherheit bieten, dass der Server nicht als offenes Relay missbraucht werden kann, richtig?
Aus .\engine\Shopware\Controllers\Frontend\Forms.php Zeile 250: if (!empty($postEmail)) { $mail-\>From = $postEmail; } else { $mail-\>From = Shopware()-\>Config()-\>Mail; } Hier entscheidet sich wohl, ob Shopware die eingetragene E-Mail-Adresse aus dem Kontaktformular als Absenderadresse nimmt oder die im System hinterlegte des Shopbetreibers (was bei mir ja funktionierte). Ich könnte ja dann eventuell diese Abfrage auslassen und generell meine eigene E-Mail als Absender verwenden und die fremde E-Mail-Adresse in den Nachrichtentext setzen, oder? Ist das die einzige Stelle bei Shopware, in der eine fremde Adresse als Absender „gespooft“ werden?
Hallo schisch, der Thread ist zwar ein wenig alt, aber trotzdem halte ich kurz für die Nachwelt das Ganze fest. Ich habe bereits das zweite Mal das Problem und verstehe auch nicht ganz, wieso Shopware das so überhaupt gelöst hat, da eigentlich jeder SMTP Server fremde Absenderadressen ablehnt. Einfach folgende Zeilen in der Datei (\engine\Shopware\Controllers\Frontend\Forms.php Zeile 250): if (!empty($postEmail)) { $mail-\>From = $postEmail; } else { $mail-\>From = Shopware()-\>Config()-\>Mail; } durch diese Zeile ersetzen: $mail-\>From = Shopware()-\>Config()-\>Mail; Dann funktioniert das Ganze wunderbar. Alternativ könnte man auch von smtp auf php mail() umstellen, aber das ist ja nicht Sinn der Sache… LG
SUUUUPER, Danke Deiner Änderung funzen jetzt bei mir Formulare. Leider bekommt der Kunde noch keine Bestellbestätigung?!? Hast Du dafür auch eine so elegante und einfache Lösung? Gruß Dieter
Für alle, die diesen Fehler noch haben sollten: Wie hier schon gesagt wurde, besteht das Problem darin, dass Shopware versucht, als Absender der E-Mail die eingegebene E-Mail Adresse des Kunden einzutragen, was dazu führt, dass der Mail Server die eingegebene Adresse nicht annimmt. Für diejenigen, welche eine programmiertechnische Lösung suchen, wurde hier auch schon eine Möglichkeit beschrieben. Falls man jedoch weder etwas umprogrammieren möchte und außerdem nicht die Möglichkeit hat, „mail“ als Versandart zu verwenden, gibt es eine weitere Möglichkeit, dass die Formulare trotzdem funktionieren: Im entsprechenden Formular muss nur der „Typ“ von EMail auf Text geändert werden und schon wird immer automatisch die vorkonfigierte Email Adresse eingetragen. Diese Lösung hat jedoch zwei kleine Nachteile: 1. Man kann nicht einfach auf „Antworten“ drücken, sondern muss immer die entsprechende Email Adresse des Kunden in das Adressfeld kopieren 2. Es findet keine Prüfung der eingegebenen Email Adresse statt Falls man sich damit abfinden kann, ist das denke ich eine schnelle und akzeptable Lösung für die meisten