php mail() funktioniert unzuverlässig... – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self php mail() funktioniert unzuverlässig... Tue, 24 Sep 19 19:02:47 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758175#m1758175 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758175#m1758175 <p>hallo,</p> <p>ich habe gerade entdeckt, dass meine mail() Funktion unzuverlässig ist. Manche Mails werden zugestellt, andere nicht. Ich habe das skript so eingerichtet, dass es eine Bestätigung an den Absender und gleichzeitig die Mail an mich sendet. Auf der Website wird eine Bestätigung bei erfolgreichem Versand angezeigt. Eigenartig ist, dass der Erfolg bestätigt wird, auch wenn nur eine der beiden Mails ankommt, weshalb ich eigentlich davon ausgehen muss, dass auch die zweite Mail zumindest aus der Sicht des Scripts erfolgreich versandt wurde. Ich habe auch schon probiert, an eine andere Adresse zu versenden, es bleibt jedoch dabei, dass es manchmal klappt und manchmal nicht, einmal wird nur die Bestätigung an den Sender, ein andermal nur die Email an mich versendet, manchmal auch keine der beiden oder beide. Ich bilde mir ein, dass es früher sehr stabil funktioniert hat. Änderungen am Server habe ich aber seither keine vorgenommen. Der Webhoster hat auf meine Anfrage (noch?) nicht reagiert. Daher hier meine Fragen:</p> <ol> <li>Gibt es eine Möglichkeit, in php ein Logfile auszulesen, das mir alle vergangenen Sendeversuche anzeigt?</li> <li>Was kann ich verändern??</li> </ol> <p>Danke!</p> <p>Anbei noch die relevante Zeile aus meinem php-Script:</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">mail</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'office@test.com'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Nachricht von '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'vorname'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'nachname'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Kopie Ihrer Nachricht '</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"<br /><div id='erfolg'>Ihre Nachricht wurde versendet.<br />Sie erhalten eine Bestätigung an Ihre Emailadresse "</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email_v'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' .</div>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"Fehler beim Senden der Nachricht. Bitte Probieren Sie es zu einem späteren Zeitpunkt oder kontaktieren sie uns per <a href='kontakt.php'>Telefon</a>."</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> php mail() funktioniert unzuverlässig... Tue, 24 Sep 19 19:20:53 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758176#m1758176 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758176#m1758176 <p>n'Abend,</p> <blockquote> <p>ich habe gerade entdeckt, dass meine mail() Funktion unzuverlässig ist.</p> </blockquote> <p>na, herzlichen Glückwunsch. ;-)</p> <blockquote> <p>Manche Mails werden zugestellt, andere nicht.</p> </blockquote> <p>Ja. Die PHP-Funktion mail() tut auch nichts weiter, als die Mailnachricht in die Warteschlange zum Versand einzureihen. Wenn das gelingt, meldet die Funktion "Erfolg". Über das Versenden an sich erfährst du aber nichts mehr.</p> <blockquote> <p>Ich habe das skript so eingerichtet, dass es eine Bestätigung an den Absender und gleichzeitig die Mail an mich sendet. Auf der Website wird eine Bestätigung bei erfolgreichem Versand angezeigt. Eigenartig ist, dass der Erfolg bestätigt wird, auch wenn nur eine der beiden Mails ankommt, weshalb ich eigentlich davon ausgehen muss, dass auch die zweite Mail zumindest aus der Sicht des Scripts erfolgreich versandt wurde.</p> </blockquote> <p>Ja: Sie wurde erfolgreich zum Versand gegeben.</p> <blockquote> <ol> <li>Gibt es eine Möglichkeit, in php ein Logfile auszulesen, das mir alle vergangenen Sendeversuche anzeigt?</li> </ol> </blockquote> <p>Nein. Da müsstest du eher das Log deines MTA befragen, wenn es ein solches gibt.</p> <blockquote> <ol start="2"> <li>Was kann ich verändern??</li> </ol> </blockquote> <p>Du könntest den kompletten SMTP-Dialog selbst realisieren. Das möchte man aber normalerweise nicht. Denn auch wenn das SMTP-Protokoll eigentlich recht einfach ist, liegt der Teufel im Detail. Sogar in mehreren Details.</p> <blockquote> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">mail</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'office@test.com'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Nachricht von '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'vorname'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'nachname'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Kopie Ihrer Nachricht '</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"<br /><div id='erfolg'>Ihre Nachricht wurde versendet.<br />Sie erhalten eine Bestätigung an Ihre Emailadresse "</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email_v'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' .</div>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"Fehler beim Senden der Nachricht. Bitte Probieren Sie es zu einem späteren Zeitpunkt oder kontaktieren sie uns per <a href='kontakt.php'>Telefon</a>."</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>Die Verwendung der Funktion stripslashes() ist ein Indiz, dass du noch etwas anderes gravierend falsch machst. Und erst recht die Tatsache, dass du POST-Parameter ungeprüft verwendest. Da könnte man dir sonstwas unterjubeln.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen. </div> php mail() funktioniert unzuverlässig... Tue, 24 Sep 19 19:22:12 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758177#m1758177 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758177#m1758177 <p>Hello,</p> <blockquote> <p>hallo,</p> <p>ich habe gerade entdeckt, dass meine mail() Funktion unzuverlässig ist. Manche Mails werden zugestellt, andere nicht. Ich habe das skript so eingerichtet, dass es eine Bestätigung an den Absender und gleichzeitig die Mail an mich sendet. Auf der Website wird eine Bestätigung bei erfolgreichem Versand angezeigt. Eigenartig ist, dass der Erfolg bestätigt wird, auch wenn nur eine der beiden Mails ankommt, weshalb ich eigentlich davon ausgehen muss, dass auch die zweite Mail zumindest aus der Sicht des Scripts erfolgreich versandt wurde. Ich habe auch schon probiert, an eine andere Adresse zu versenden, es bleibt jedoch dabei, dass es manchmal klappt und manchmal nicht, einmal wird nur die Bestätigung an den Sender, ein andermal nur die Email an mich versendet, manchmal auch keine der beiden oder beide. Ich bilde mir ein, dass es früher sehr stabil funktioniert hat. Änderungen am Server habe ich aber seither keine vorgenommen. Der Webhoster hat auf meine Anfrage (noch?) nicht reagiert. Daher hier meine Fragen:</p> <ol> <li>Gibt es eine Möglichkeit, in php ein Logfile auszulesen, das mir alle vergangenen Sendeversuche anzeigt?</li> <li>Was kann ich verändern??</li> </ol> <p>Danke!</p> <p>Anbei noch die relevante Zeile aus meinem php-Script:</p> <pre><code class="block language-php"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">mail</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'office@test.com'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Nachricht von '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'vorname'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'nachname'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> <span class="token keyword">and</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'Kopie Ihrer Nachricht '</span><span class="token punctuation">,</span><span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"<br /><div id='erfolg'>Ihre Nachricht wurde versendet.<br />Sie erhalten eine Bestätigung an Ihre Emailadresse "</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email_v'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' .</div>'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">echo</span><span class="token string double-quoted-string">"Fehler beim Senden der Nachricht. Bitte Probieren Sie es zu einem späteren Zeitpunkt oder kontaktieren sie uns per <a href='kontakt.php'>Telefon</a>."</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>Dazu gibt es viel zu schreiben, von Mailinjection über Codierung zur Funktionsweise des Mailwrappers von PHP (Zusammenarbeif mif dem Mailserver), Zeilenumbrüche, ...</p> <p>Morgen bekommst Du Antwort von mir.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 05:02:38 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758180#m1758180 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758180#m1758180 <p>Hallo Paul,</p> <p>wichtige Punkte hat dir Martin schon genannt. Bei deinem Problem würde ich von einer Servereinstellung ausgehen. Vielleicht greift hier ab und zu eine Sicherheitssperre. Deine IF würde ich mal umbauen und sehen was passiert. (nehme jetzt der Einfachheit deine Werte, obwohl Martin dir ja schon was dazu gesagt hat). Sehe auch gerade mit den Hochkommata ist etwas chaotisch und übersichtlicher sowieso getrennt.</p> <pre><code class="block">$empf_1 = 'office@test.com'; $betreff_1 = "Nachricht von {$_POST['vorname']} {$_POST['nachname']}"; $mess = stripslashes($_POST['message']); $empf_2 = $_POST['email']; $betreff_2 = 'Kopie Ihrer Nachricht'; if( mail($empf_1,$betreff_1,$mess, $extra) ) { // Nur mal testen, ob vielleicht eine kleine Verzögerung was bringt sleep(1); mail($empf_2,$betreff_2,$mess, $extra); echo"<br /><div id='erfolg'>Ihre Nachricht wurde versendet.<br />Sie erhalten eine Bestätigung an Ihre Emailadresse ".$_POST['email_v'].' .</div>'; }else{ echo " Fehler beim Senden der Nachricht. Bitte Probieren Sie es zu einem späteren Zeitpunkt oder kontaktieren sie uns per <a href='kontakt.php'>Telefon</a>."; } </code></pre> <p>Mal abgesehen von der Verzögerung, ist die Kontrollmail nun innerhalb der bestätigten Mailaufforderung (weil, wofür zusätzliche Kontrolle), falls doch kannst du das ja wieder so machen wie bisher nur (als Anregung) vielleicht mit "&&" anstatt "and". Frag mich nicht warum, habs mir so angewöhnt, weils mir igendwann mal gesagt wurde, weils in der Rangordnung höher steht und mir persönlich besser zusagt, echte Vorteile, anhand Beispiele, müsste jemand anders erklären.</p> <p>ps. Die aktuelle Darstellung vom Quellcode, bedingt durch die extrascrollbalken ist nicht schön. Ich vermute ich kann das für meine Ansicht im CSS ändern, für normale besucher wärs vielleicht besser wenn zumindest die Schrift darin kleiner wäre, damits den Post nicht so erschlägt und übersichtlicher erscheint? Nur ne Anregung.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 06:20:25 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758185#m1758185 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758185#m1758185 <p>Tach!</p> <p>Logfiles und wie mail() funktioniert, wurde ja schon angesprochen. Hier noch zwei Sicherheitshinweise.</p> <blockquote> <pre><code class="block language-php"><span class="token function">mail</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'office@test.com'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Nachricht von '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'vorname'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string single-quoted-string">' '</span><span class="token operator">.</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'nachname'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Kopie Ihrer Nachricht '</span><span class="token punctuation">,</span> <span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> </code></pre> </blockquote> <p>Die Funktion stripslashes() hat man früher verwendet, als es das Feature namens Magic Quotes noch gab. Das ist aber seit langem ausgestorben, oder du betreibst eine uralte PHP-Version.</p> <p>Wenn du die Eingabe $_POST['email'] nicht noch anderweitig prüfst, hast du beim zweiten mail() eine wunderbare Spam-Schleuder gebaut. Man kann nämlich eine Menge Adressen angeben, an die dann dein Mailserver je eine Nachricht schickt. Das ist nicht nur für alle Empfänger ärgerlich, sondern auch für dich und deinen Hoster, weil der Server auf Blacklisten landet.</p> <p>dedlfix.</p> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 05:29:14 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758183#m1758183 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758183#m1758183 <p>Hello,</p> <p>zuerst das mail.log und das zugehörige Errorlog befragen.</p> <p>Und dann ist der Fehler erfahrungsgemäß bei falscher oder fehlender Codierung/Codierungsangabe, sowie ggf. falschen EOL zu suchen.</p> <p>Außerdem gehört der Kontroll-Emailname in einen bcc-Header für die eMail. Nur so ist sicherzustellen, dass der Mailserver beide eMails gleich behandelt - mit Ausnahme der Adressaten.</p> <p>Adressaten direkt aus Benutzereingaben in die Mailheader zu übernehmen, gehört außerdem mit Internetverbot bestraft!</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 22:01:10 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758196#m1758196 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758196#m1758196 <blockquote> <p>zuerst das mail.log und das zugehörige Errorlog befragen.</p> </blockquote> <p>wo finde ich denn diese Logdateien? in meinenm Root-verzeichnis finde ich einen "Stats" - Ordner, sonst aber keinerlei zusätzliche Ordner und Datein ausser den von mir angelegten.</p> <blockquote> <p>Und dann ist der Fehler erfahrungsgemäß bei falscher oder fehlender Codierung/Codierungsangabe, sowie ggf. falschen EOL zu suchen.</p> </blockquote> <p>Was meinst du mit Codierung? Wo gehört da was hin? Innerhalb der mail()-Funktion? Da hab ich nur noch stehen: <code>$extra .= "Content-Type: text/html\n;"</code></p> <blockquote> <p>Außerdem gehört der Kontroll-Emailname in einen bcc-Header für die eMail. Nur so ist sicherzustellen, dass der Mailserver beide eMails gleich behandelt - mit Ausnahme der Adressaten.</p> </blockquote> <p>du meinst also, garnicht zwei Mails zu verschicken, sondern nur eines und Bcc an mich?</p> <blockquote> <p>Adressaten direkt aus Benutzereingaben in die Mailheader zu übernehmen, gehört außerdem mit Internetverbot bestraft!</p> </blockquote> <p>Ich habe das weiter unten schon beschrieben: Die Inhalte der Eingabefelder werden vorab geprüft eund bei Plausibilität als Vorschau dargestellt, die dann manuell per Usereingabe bestätigt wird. Genügt das so?</p> <blockquote> <p>Glück Auf<br> Tom vom Berg</p> </blockquote> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 21:44:45 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758195#m1758195 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758195#m1758195 <blockquote> <p>Die Funktion stripslashes() hat man früher verwendet, als es das Feature namens Magic Quotes noch gab. Das ist aber seit langem ausgestorben, oder du betreibst eine uralte PHP-Version.</p> </blockquote> <p>Ich habe tatsächlich eine uralte PHP-Version, nämlich 5.6. Der Grund ist, dass ich fürchte, dass andere Dinge nicht mehr funktionieren, wenn ich auf eine neuere Version umstelle. Kann man ein Upgrade auf eine neuere Version üblicherweise auch ohne Risiko rückgängig machen?</p> <blockquote> <p>Wenn du die Eingabe $_POST['email'] nicht noch anderweitig prüfst, hast du beim zweiten mail() eine wunderbare Spam-Schleuder gebaut. Man kann nämlich eine Menge Adressen angeben, an die dann dein Mailserver je eine Nachricht schickt. Das ist nicht nur für alle Empfänger ärgerlich, sondern auch für dich und deinen Hoster, weil der Server auf Blacklisten landet.</p> </blockquote> <p>Ich prüfe die Eingaben vorher und sammle sie in einer Vorschau-Ansicht. Die gesammelten Daten in meinem Beispiel-Script sind das Ergebnis dessen, was nach der Überprüfung und der generierten Vorschau durch manuelles Bestätigen weitergeschickt wird. Ist das ok so?</p> <blockquote> <p>dedlfix.</p> </blockquote> Grundregelverstoß Thu, 26 Sep 19 08:31:30 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758201#m1758201 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758201#m1758201 <pre><code class="block bad language-php"><span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'email'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'Kopie Ihrer Nachricht '</span><span class="token punctuation">,</span> <span class="token function">stripslashes</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extra</span><span class="token punctuation">)</span> </code></pre> <p>Der <strong>Grundregelverstoß</strong> ist schon, dass der Benutzer <strong>Empfängeradresse und Inhalt</strong> eines der beiden Mails bestimmt.</p> <p><strong>Lösung:</strong></p> <p>Das Bestätigungsmail keineswegs versenden, sondern nur auf der Webseite anzeigen.</p> php mail() funktioniert unzuverlässig... Wed, 25 Sep 19 22:30:38 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758197#m1758197 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758197#m1758197 <p>Tach!</p> <blockquote> <blockquote> <p>Die Funktion stripslashes() hat man früher verwendet, als es das Feature namens Magic Quotes noch gab. Das ist aber seit langem ausgestorben, oder du betreibst eine uralte PHP-Version.</p> </blockquote> <p>Ich habe tatsächlich eine uralte PHP-Version, nämlich 5.6.</p> </blockquote> <p>Die ist zwar alt, aber selbst da gabs die Magic Quotes schon eine Weile nicht mehr.</p> <blockquote> <p>Der Grund ist, dass ich fürchte, dass andere Dinge nicht mehr funktionieren, wenn ich auf eine neuere Version umstelle. Kann man ein Upgrade auf eine neuere Version üblicherweise auch ohne Risiko rückgängig machen?</p> </blockquote> <p>Das kommt ganz drauf an, wie das PHP installiert wird. Es gibt auch Parallel-Installationen, dann wäre es gar kein Problem.</p> <blockquote> <blockquote> <p>Wenn du die Eingabe $_POST['email'] nicht noch anderweitig prüfst, hast du beim zweiten mail() eine wunderbare Spam-Schleuder gebaut. Man kann nämlich eine Menge Adressen angeben, an die dann dein Mailserver je eine Nachricht schickt. Das ist nicht nur für alle Empfänger ärgerlich, sondern auch für dich und deinen Hoster, weil der Server auf Blacklisten landet.</p> </blockquote> <p>Ich prüfe die Eingaben vorher und sammle sie in einer Vorschau-Ansicht. Die gesammelten Daten in meinem Beispiel-Script sind das Ergebnis dessen, was nach der Überprüfung und der generierten Vorschau durch manuelles Bestätigen weitergeschickt wird. Ist das ok so?</p> </blockquote> <p>Wenn <em>du</em> die Vorschau machst, dann ja. Wenn es der Anwender ist, dann nicht. Spammer bestätigen in der Regel sehr gern ihren Müll.</p> <p>dedlfix.</p> php mail() funktioniert unzuverlässig... Thu, 26 Sep 19 07:53:21 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758200#m1758200 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758200#m1758200 <blockquote> <p>wo finde ich denn diese Logdateien?</p> </blockquote> <p>Auf Linux oder Unix-Systemen unterhalb von <code>/var/log/</code>.</p> <blockquote> <p>in meinenm Root-verzeichnis finde ich einen "Stats" - Ordner, sonst aber keinerlei zusätzliche Ordner und Datein ausser den von mir angelegten.</p> </blockquote> <p>Dein Hoster hat Dich in einer "chroot-Umgebung" eingesperrt. (Das hätte ich mit Dir wohl auch so gemacht.) Also kommst Du, jedenfalls nicht ohne besondere Kenntnisse, nicht an die Logfiles ran. Aber der Kundendienst Deines Hosters kann diese (hoffentlich) lesen…</p> <p>Im Hinblick auf Dein Skript würde es mich nicht wundern wenn da ab und an bei einigen Mailservern eine Firewall und/oder ein (die Firewall steuernder) Spamfilter Mails vom Server Deines Hosters nicht mehr will. Du schädigst also mutmaßlich noch hunderte oder gar tausende andere Kunden Deines Hosters.</p> php mail() funktioniert unzuverlässig... Thu, 26 Sep 19 09:18:33 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758202#m1758202 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758202#m1758202 <p>Hello,</p> <p>für die Kodierung der Header gibt es eine Funktion <a href="https://www.php.net/manual/en/function.mb-encode-mimeheader.php" rel="nofollow noopener noreferrer">mb_encode_mimeheader()</a>.</p> <p>Der Mailbody muss nicht unbedingt kodiert werden, muss aber mit einem passenden Header versehen werden.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> php mail() funktioniert unzuverlässig... Thu, 26 Sep 19 19:23:32 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758217#m1758217 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758217#m1758217 <p>Gibts vielleicht irgendwo eine Anleitung oder ein Beispiel für ein richtig implementiertes php - Kontaktformular, das mail() benutzt?</p> <blockquote> <p>Im Hinblick auf Dein Skript würde es mich nicht wundern wenn da ab und an bei einigen Mailservern eine Firewall und/oder ein (die Firewall steuernder) Spamfilter Mails vom Server Deines Hosters nicht mehr will. Du schädigst also mutmaßlich noch hunderte oder gar tausende andere Kunden Deines Hosters.</p> </blockquote> Grundregelverstoß Thu, 26 Sep 19 14:26:29 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758209#m1758209 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758209#m1758209 <p>aha, das wusste ich nicht. d.h. ich könnte dem Benutzer eine allgemeine Mail schicken, dass ich seine Mail erhalten habe, aber nicht mit dem von ihm eingegebenen Inhalt?</p> Grundregelverstoß Thu, 26 Sep 19 14:46:20 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758211#m1758211 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758211#m1758211 <p>Hallo,</p> <blockquote> <p>aha, das wusste ich nicht. d.h. ich könnte dem Benutzer eine allgemeine Mail schicken, dass ich seine Mail erhalten habe, aber nicht mit dem von ihm eingegebenen Inhalt?</p> </blockquote> <p>das ist nicht der Punkt. Das Problem ist, dass du eine e-Mail verschickst, bei der ein völlig Fremder sowohl die Empfängeradresse als auch den Inhalt frei eingeben kann. Okay, du nimmst an, dass der Besucher seine eigene Mailadresse angibt - was aber, wenn er eine (oder viele) völlig fremde angibt? Dann verschickt <strong>dein</strong> Server ungefragt SPAM an Fremde.</p> <p>Und das möchte man auf gar keinen Fall.</p> <p>Deswegen: Keine Mail an Adressen, die nicht zweifelsfrei verifiziert sind.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen. </div> Grundregelverstoß Fri, 27 Sep 19 02:52:48 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758221#m1758221 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758221#m1758221 <blockquote> <p>Deswegen: Keine Mail an Adressen, die nicht zweifelsfrei verifiziert sind.</p> </blockquote> <p>In diesem Fall gilt das. Aber bei einem <a href="https://de.wikipedia.org/wiki/Opt-in" rel="nofollow noopener noreferrer">Double-Opt-In</a> ist der Versand an nicht "nicht zweifelsfrei verifizierte Adressen" (wenn nicht mit Werbung verbunden) erlaubt.</p> php mail() funktioniert unzuverlässig... Thu, 26 Sep 19 19:54:49 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758218#m1758218 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758218#m1758218 <p>Hallo Paul,</p> <blockquote> <p>Gibts vielleicht irgendwo eine Anleitung oder ein Beispiel für ein richtig implementiertes php - Kontaktformular, das mail() benutzt?</p> </blockquote> <p>Du möchtest das also als Kontaktformular nutzen? Warum dann eine Email an der Ersteller? Wobei sowas sowieso oft schon keine gute Idee ist, denn wenn du keinen ordentlichen Spamschutz hinbekommst, könntest du zugemüllt werden. Früher gehörte ein Kontaktformular zum guten Ton, mittlerweile hat sich, eben aus den Gründen, eine einfache Emailadresse durchgesetzt.</p> <p>Was hat eigentlich <a href="https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758180#m1758180" rel="noopener noreferrer">der Test</a> mit sleep() ergeben?</p> <p>Was du vielleicht suchst, sind sogenannte Ticketsysteme zb. <a href="https://www.opensupports.com/" rel="nofollow noopener noreferrer">das hier</a>. Lohnt sich aber nicht die Mühe bei wenigen Anfragen.</p> <p>Gruss<br> Henry</p> <div class="signature">-- <br> Meine Meinung zu DSGVO & Co:<br> „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“ </div> Grundregelverstoß Fri, 27 Sep 19 05:10:08 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758223#m1758223 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758223#m1758223 <p>Moin,</p> <blockquote> <blockquote> <p>Deswegen: Keine Mail an Adressen, die nicht zweifelsfrei verifiziert sind.</p> </blockquote> <p>In diesem Fall gilt das. Aber bei einem <a href="https://de.wikipedia.org/wiki/Opt-in" rel="nofollow noopener noreferrer">Double-Opt-In</a> ist der Versand an nicht "nicht zweifelsfrei verifizierte Adressen" (wenn nicht mit Werbung verbunden) erlaubt.</p> </blockquote> <p>doppelte Verneinung will gelernt sein. ;-)</p> <p>Aber in deinem Sinne interpretiert, ist deine Aussage ja kein Widerspruch zu meiner: Nach einem Double Opt-In <strong>ist</strong> die Mailadresse ja verifiziert. Das heißt nicht, dass ich dann weiß, zu welcher Person sie gehört - aber auf jeden Fall, dass sie im Zugriffsbereich der Person liegt, die da gerade anfragt, und nicht jemand ganz anderem gehört.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen. </div> Grundregelverstoß Fri, 27 Sep 19 06:40:39 Z https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758226#m1758226 https://forum.selfhtml.org/self/2019/sep/24/php-mail-funktioniert-unzuverlassig/1758226#m1758226 <p>Hello,</p> <p>[•••] aber vor dem Opt-In eben noch nicht.</p> <p>Allerdings liegt die Eingabemöglichkeit für die Empfängeradresse dann hinter einem Account-Create, also hoffentlich der Abfrage plausibler Daten. Das schaffen bei einstufigen Account-Create-Verfahren einige Bots zwar auch schon, diese Hürde zu überwinden, aber doch sehr selten.</p> <p>Außerdem sollte man als Zieladresse immer nur eine einzige zulassen. Die meisten Webserver würden ja auch mehrere, durch Komma getrennt in einer Zeile, annehmen.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div>