• Sodele.
    Das ganze Geraffel hab ich auf einer Testsite, die mit .htpasswd geschützt ist, damit da keiner reinkommt. Daher keine Links)
    Ich habe da ein Kontaktformular (contact.html), deren Mailfunktion so aussieht:


    Nach Klick auf den Absenden-Button erscheint die Seite contact-post.html.

    Die Mail wird wohl hier versendet:

    Wenn ich in alle Felder was eintrage und die mail versende, bekomme ich das hier:
    (Quelltextansicht der HTML-Mail in Thunderbird)

    Jetzt ist das natürlich nicht wirklich...äh... zielführend.

    Wie... wo... was stimmt da denn nicht?
    Ich habe noch nie ne mail-function selbst irgendwo eingefrickelt.

    Wer zuerst "Datenschutz" sagt, hat verloren.

  • Äm ja, mal als Beispiel:
    <title>Nachricht von </title> Da fehlt also was hinter dem von... Da müsste eigentlich der Name stehen, denn
    $subject = "Nachricht von ".$userName;
    $userName selbst kommt vom
    $userName=$_REQUEST['userName']; und
    $_REQUEST['userName'] kommt aus dem Formular. Nun stellt sich die Frage... Wo in dem Fomrular ist denn das Feld mit dem Namen
    "userName" ??? Bei den anderen stellt sich natürlich genau die gleiche Frage.

    Mach mal aus dem hier:

    <input type="text" class="text" value="Ihr Name" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Ihr Name';}">

    das hier:

    <input name="userName" type="text" class="text" value="Ihr Name" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Ihr Name';}">

    und versuche es nochmal

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Echt, ey. Das war das allerletzte mal, das ich von dem Verein ein Template gekauft habe.
    Tun so, als ob es Engländer sind und wenn ich sie dann auf das nicht funktionierende Email-Dingens anquatsche, sind sie urplötzlich Amis und faseln was von "Gekauft wie gesehen" :down:

    Werd ich nachher mal versuchen, syno. Danke.

    EDIT:
    Oh! Dat geht! :grins:
    Da fehlt also aus irgendeinem Grund immer dieses name="Dingsbums".

    Wer zuerst "Datenschutz" sagt, hat verloren.

  • Dank Hilfe von Syno jetzt das Ergebnis, das doch tatsächlich funzt.

    HTML-Gedöhns:

    Das PHP-Gedöhns:

    Ergebnis in der Quelltextansicht von Thunderbird:

    HTML
    Return-Path: <webmaster@example.com>  Delivered-To: support@seidenhandel.com  Received: by host.seo-nw4.de (Postfix, from userid 1005)  	id D74831273D0BC; Mon, 28 Apr 2014 13:50:25 +0200 (CEST)  To: support@seidenhandel.com  Subject: seidenstoff.ch - mein betreff  X-PHP-Originating-Script: 1005:contact.php  From: support@seidenhandel.com  Reply-To: support@seidenhandel.com  Cc: support@seidenhandel.com  MIME-Version: 1.0  Content-Type: text/html; charset=UTF-8  Message-Id: <20140428115025.D74831273D0BC@host.seo-nw4.de>  Date: Mon, 28 Apr 2014 13:50:25 +0200 (CEST)   <html><head><title>seidenstoff.ch - mein betreff</title></head><body><table><tr><td>eMail ID:  </td><td> support@seidenhandel.com</td></tr> <tr><td>Telefon: </td><td> 123456</td></tr><tr><td>Name: </td><td> testname</td></tr><tr><td>Betreff: </td><td> mein betreff</td></tr><tr><td>Mitteilung: </td><td> meine nachricht #'*~?=)(/ÄÖÜäöü? https://beispiel.rocks/beispiel.rocks/www.seidenhandel.com support@seidenhandel.com </td> </tr></table></body></html>


    Bei der Gelegenheit habe ich das noch von ISO auf UTF-8 umgestellt.

    Wie bringe ich das hin, das man kein HTML im Formular übergeben wird?
    Wenn ich da einen Link mit a href reinwerfe, kommt auch ein klickfähiger link in der email raus. Das ist ja nicht so dolle.
    Wie kann man html-Zeugs raus"strippen"?

    Wer zuerst "Datenschutz" sagt, hat verloren.

  • Wie meinste das? Also bei Dir im Formular wie kein HTML übergeben. Was natürlich möglich ist, in Formular HTML rein zu schreiben. Das andere HTML-Zeug, das schon da ist, kommt aus dem Script nicht aus dem Formular.

    Aber, um es auch mal so vorweg zu sagen. Ja, Du kannst bei dem Formular die übergeben Werte dann im Script prüfen und HTML entfernen.

    Im Script gibt es das ja bestimmten Stellen ja schon:
    $headers = "From: " . strip_tags($userEmail) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($userEmail) . "\r\n";
    $headers .= "Cc: ". strip_tags($userEmail) . "\r\n";

    -> strip_tags()

    Das müssteste also auch mit den anderen variablen machen, Betreff und Nachricht.

    Den restlichen HTML-Code hast ja direkt im Code stehen bei "$message = '".

    Wenn Du aber alles raus nimmst, also komplett ohne HTML, dann sollte auch der Mime-Type entsprechend angepasst werden.

    Aber mal so gesagt, dieses Script schaut aus, als ob das von einem Hauptschüler 7 Klasse erstellt wurde und dessen Erfahrung in Sachen PHP bei weniger als 2 Wochen liegt. Alleine schon die Regel "Sende nie html ohne auch txt-plain zu senden"wird gämzlich missachtet. Was macht denn da ein Empfänger, wenn der kein HTML anzeigen lässt?

    Und wegen Deinem utf-8. Wie wichtig ist denn das Script und vor allem die Mails, die gesendet werden? Die Wahrscheinlichkeit, dass die in Spamfiltern landen ist recht hoch. Wenn Du utf-8 nutzt, dann muss auch die Mail und der Subject entsprechend mit base64_encode kodiert werden und der "Prefix" vorne und hinten dran. Z.B.:

    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Zitat

    Aber mal so gesagt, dieses Script schaut aus, als ob das von einem Hauptschüler 7 Klasse erstellt wurde und dessen Erfahrung in Sachen PHP bei weniger als 2 Wochen liegt.


    Ich sag nur: WebDesigner^^ Amis^^

    Am liebsten würde ich eh nur Plain Text versenden. Das ist nur ein Kontaktformular für den Erstkontakt, ohne das da Anhänge dabei wären. Die kann er dann über mein Ticketcenter schicken, wenn ihm danach ist und die ich eh nicht lese.

    Dann werd ich mal weiterfrickeln. Endlich mal wieder was Neues zum spielen :floet:

    Wer zuerst "Datenschutz" sagt, hat verloren.