Ich habe ein Problem mit dem Kontaktformular

Liebe Freunde,

ich habe für einen Kunden einen OXID-Shop erstellt, und dieser kam auf mich zu, um mir mitzuteilen, das das Kontaktformular nicht funktioniert.

Ich habe mir das angesehen, und siehe da: Das stimmt.

Ich muss feststellen, dass der Versand von E-Mails über den Shop prinzipiell funktioniert, Bestellungen und die entsprechenden E-Mails gehen ein.

Wenn ich das Kontaktformular ausfülle und absende, bekomme ich eine Erfolgsnachricht, allein weder beim Kunden (in diesem Falle bei mir) noch beim Shop-Betreiber kommt jemals eine Mail an.

Was mich irritiert, und was ich mir bisher nicht erklären kann, ist die Tatsache, dass das Feld Anrede doppelt erscheint. Meine Versuche, das zu rekonstruieren, sind bisher gescheitert. Ob da ein Zusammenhang zwischen diesem doppelten Feld und dem Nichtversand besteht, kann ich auch nicht sagen.
Hat da jemand ene Idee? Meine Suche im Forum ergab bisher keine Treffer.
Wir haben hier die Community Edition 6.1.4

Würde Dir empfehlen Deinen Shop komplett auf https:// umzustellen, dieser Mix zwischen http und https könnte auch das Problem sein. Dazu meinen Blogbeitrag force_sid URL Parameter verhindern | Professionelle Modulentwicklung beachten.

Viele Grüße,
Tim

Hallo @nbert,

wenn alle anderen Messaging-Dienste funktionieren, schau bitte mal nach, ob die E-Mails vielleicht versendet werden und nur im Spam-Ordner landen. Ist der SMTP in den Grundeinstellungen richtig eingetragen? Ist beim Hosting-Provider der SPF-Record richtig gesetzt? Welcher Hosting Provider ist es denn? Und kommst Du möglicherweise an die E-Mail-Logs um nachzuschauen, was wann warum rausgesendet wird und was irgendwo aus Gründen hängen bleibt?

Wie @indianer3c schon sagt: Die komplette Umstellung auf SSL könnte eine Hürde sein; die doppelte Anrede im Formular halte ich für einen Fehler im Template.

Danke erst einmal.
Das mit dem Thema SSL nehme ich mir mal vor.

Zum Thema Fehler im Template:
Denn müssten dann doch auch andere haben, ich habe an dem Template nichts geändert, das beruht auf Wave. Ich habe lediglich den Google-Maps Part auskommentiert, und auch wenn ich den wieder reinnehme, bzw. meine Version im Child-Template entferne, ist die doppelte Anrede da.

Und den Spam-Ordner hattee ich natürlich als erstes kontrolliert. :wink:

Das mit der doppelte Anrede wirkt so, dass Du ein Modul mit Blocküberladungen nutzt welches ausversehen doppelt aktiviert wurde. Am Besten dieses Modul einmal über Admin deaktivieren, dann Kontaktseite aufrufen ob doppeltes Element verschwunden. Dann Modul wieder aktivieren. Dann sollte doppelte Anzeige verschwunden.

Leider nicht.
Interessant ist es, das die Abfrage nicht einfach verdoppelt ist:

Die erste Abfrage:

<select name="editval[oxuser__oxsal]" class="form-control selectpicker show-tick  bs-select-hidden">
    <option value="" selected="">Bitte auswählen...</option>
    <option value="MRS">Frau</option>
    <option value="MR">Herr</option>
</select>

Die zweite Abfrage:

<div class="btn-group bootstrap-select form-control show-tick">
	<button type="button" class="btn dropdown-toggle btn-default" data-toggle="dropdown" title="Bitte auswählen...">
		<span class="filter-option pull-left">Bitte auswählen...</span>
		&nbsp;
		<span class="caret"></span>
	</button>
		<div class="dropdown-menu open">
			<ul class="dropdown-menu inner" role="menu">
				<li data-original-index="0" class="selected">
					<a tabindex="0" class="" style="" data-tokens="null">
						<span class="text">Bitte auswählen...</span>
						<span class="glyphicon glyphicon-ok check-mark"></span>
					</a>
				</li>
				<li data-original-index="1">
					<a tabindex="0" class="" style="" data-tokens="null">
						<span class="text">Frau</span>
						<span class="glyphicon glyphicon-ok check-mark"></span>
					</a>
				</li>
				<li data-original-index="2">
					<a tabindex="0" class="" style="" data-tokens="null">
						<span class="text">Herr</span>
						<span class="glyphicon glyphicon-ok check-mark"></span>
					</a>
				</li>
			</ul>
		</div>
</div>

Wo diese zweite Abfrage herkommt bekomme ich einfach nicht raus.

Ich habe das überprüft.
Die sShop URL stand auf http
Das habe ich geändert (Die URL ist natürlich korrekt eingetragen):

$this->sShopURL     = 'http://www.xxxxxxx.de'; // eShop base url, required
$this->sSSLShopURL  = 'https://www.xxxxxxx.de';           // eShop SSL url, optional

Leider immer noch das gleiche Spiel.

Okay es handelt sich anscheinend um Community Edition 6.1.x mit Wave Theme 1.3.1 welches auf Bootstrap Version 4.1.3 basiert. Der zweite Abschnitt bei der Anrede kommt anscheinend über JavaScript rein…

Die Klasse hier wurde vom Standard geändert wave-theme/contact.tpl at v1.3.1 · OXID-eSales/wave-theme · GitHub die CSS Klasse bei Dir lautet form-control selectpicker show-tick anstatt form-control show-tick. Dort wurde anscheinend selectpicker Klasse ergänzt. Das muss ja jemand ergänzt haben und irgendeinen Effekt zu erzielen…

Bootstrap Selectpicker Erweiterung Examples | bootstrap-select · SnapAppointments Developer

Ansonsten für das Kontaktformular und ganzen Shop wäre eine Weiterleitung bzw. Festlegung für eine Domain sinnvoll. Der Mix zwischen

nicht gut. Weil wenn man über eine unverschlüsselte Version Kontaktformular absendet wird man auf https:// Version weitergeleitet und dort geht Nachricht wahrscheinlich verloren…

Könntest auf meine kostenlose Modulversion GitHub - BisWeb2/preferred-domain zurückgreifen, wenn Du nicht weißt wie man dies über .htaccess einstellst.

Junge Junge, da hat aber jemand tatsächlich Ahnung bis in die Tiefe!
Mein Respekt, und mein Dank dafür, das du dir die Zeit nimmst mir hier zu antworten.

Erstmal ganz lieben Dank.

In der Zwischenzeit hatte ich mal das ganze “Anrede” Feld rausgeworfen, hat aber auch nichts gebracht. Das mit der Mischung aus verschiedenen Domains ist tatsächlich sehr unsauber, das sollte so nicht sein. Und die Umleitung konnte ich noch so gerade selber in die .htaccess schreiben (ohne www. habe ich auch irgendwo? Konnte ich nicht finden).
Hat aber leider auch nichts gebracht.
Auch der Tipp mit der Klasse “selectpicker” war goldrichtig, die zweite Abfrage ist verschwunden.
Leider kommen die Mails immer noch nicht durch.
Ich warte jetzt mal auf die Antwort des Providers wo er log-files zum Thema Mail versteckt.

1 Like

So, ausgiebig mit dem Provider telefoniert.
Gefunden im deadletter.log von gestern:

To: [email protected]
Subject: eMail problem in shop!

Error sending eMail(Test) to:

[email protected]

Error : SMTP Error: Could not authenticate.

Ein paar Tage vorher der Eintrag:

To: [email protected]
Subject: eMail problem in shop!

Error sending eMail() to:

[email protected]

Error : SMTP Error: data not accepted.SMTP server error: DATA END command failed Detail: Spam message rejected
SMTP code: 554 Additional SMTP info: 5.7.1

Sonst keine Einträge in mail.log oder deadletter.log.
Da alle anderen E-Mails wie Bestellungen etc. durchgehen, konnte der freundliche Provider mir keinen hilfreichen Tip geben.

Ich habe also die Eintragungen unter Stammdaten/Grundeinstellungen/Stamm noch einmal überprüft, das SMTP-Passwort erneut eingetragen, Testbestellungen ausgelöst und eine Mail über das Kontaktformular (eben nicht) gesendet. Testbestellung kommt an, Kontaktanfrage verschwindet in den Tiefen der Datenverarbeitung.

Da ich diverse Male das Kontaktformular ausgefüllt habe, und in den letzten Tagen lediglich die beiden oben genannten Meldungen geloggt wurden, bin ich jetzt tatsächlich am Ende meiner Weisheit.
Das mag der Tatsache geschuldet sein, das dieses Ende in meinem Fall erschreckend schnell erreicht wird.

Hat irgendwer eine Idee wo man noch suchen könnte?

Für Bestellungen wäre ja eine andere EMail-Adresse möglich. Hast denn überall dieselbe drin?

E-Mail-Adresse für Infos
E-Mail-Adresse für Antworten
E-Mail-Adresse für Bestellungen

Vieles deutet darauf hin, dass Deine hinterlegte E-Mail Adresse für das Kontaktformular die Nachrichten die übers Kontaktformular des Shops versendet nicht annimmt, weil als Spam gewertet etc.

Dort müsstet Deine SMTP Zugangsdaten prüfen und gucken ob Deine DNS Einstellungen für den Mailversand korrekt.

Ich gehe mal davon aus, das du mit der hinterlegten E-Mail Adresse die meinst, die in den Stammdaten/Grundeinstellungn/Stamm /E-Mail-Adresse für Infos eingetragen wird?
Wenn dem so ist, ist das leider auch nicht die Lösung.

Die war anders, allerdings identisch mit “E-Mail-Adresse für Antworten” und die gingen ja durch (Bestellbestätigung an den Kunden)
Ich habe trotzdem mal die E-Mail Adresse der Bestellung eingetragen (und sogar das tmp geleert).
Leider nicht.
SMTP Zugangsdaten sind geprüft, DNS für Mailversand sagt mir leider nichts, aber Mailversand funktioniert ja eigentlich - bei Bestellungen.

Letztlich wird alles ja über phpMailer versendet. Nur die Header sind anders. Vielleicht gefällt Deinem Server ncht, dass setRecipient(), setFrom() und setReplyTo() unterschiedlich “befüllt” sind.

bei Google: Die Fehlermeldung 554 5.7.1 Relay access denied tritt dann auf, wenn SMTP-Authentifizierung in Ihrem E-Mail Client nicht korrekt aktiviert ist. Um die Server vor Missbräuchen durch externe Spammer zu schützen, ist es notwendig, dass nur berechtigte Nutzer E-Mails verschicken können.

Wie siegt den der Eintrag von Server, SMTP-Benutzer und Passwort in den Grundeinstellungen aus? Ist der richtige Port angegeben?
SMTP-Server: my.server.de:587; ← SMTP-Port
SMTP-Benutzer:je nach Provider unterschiedlich (bei mir die Mailadresse)
SMTP-Passwort: sollte bekannt sein.

SMTP-Server: my.server.de:587; ← SMTP-Port
SMTP-Benutzer:je nach Provider unterschiedlich (bei mir die Mailadresse)
SMTP-Passwort: sollte bekannt sein.

Alles kontrolliert, alles korrekt.
Port jetzt auch verschiedene (die 587 und die 25 (von meinem Provider empfohlen) eingetragen, ändert nichts.

Allerdings ist diese Fehlermeldung ja auch nur ein einziges mal aufgetaucht, und das könnte zwischendurch bei der Überprüfung der SMTP-Faten passiert sein.

prüf doch mal ob die IP in einer Blacklist ist:

Würden dann nicht alle Mails blockiert?

im Prinzip ja - aber je nach E-Mail-Progamm kann man einstellen, dass bestimmte E-Mail-Konten / IPs nicht vom Spam-Filter geblockt werden.
Und generell sollte man schon wissen, ob der Mail-Server “hart an der Grenze” arbeitet.
Achtung: die Prüfung nicht (nur) über das E-Mail-Programm (z.B. Outlook) vornehmen, sondern die Empfänger E-Mail-Adresse temporär im Admin-Bereich eintragen.