Darstellung von PHP Mails in Mailprogrammen

  • Hallo,


    ich habe ein Forumlar welches ausgefüllt und als Bestätigung dann an denjenigen gesendet wird, welcher das Forumlar ausgefüllt hat.
    Bei sämtlichen meiner Tests, hat mir das Roundcube und auch mein Thunderbird die Mails korrekt angezeigt.


    Mir ist nun zu Ohren gekommen, dass es bei manchen dann in dieser Form ankommt: (Mail etwas gekürzt von mir)


    Woran kann dies liegen und wie kann ich dem entgegen wirken?


    Gruß tsp

  • Ohne das Skript zu kennen, mit dem die Nachrichten verwendet werden, sieht das nach Leerzeilen in den Headern aus (was nicht erlaubt ist). Manche Clients sind wohl so schlau das zu erkennen und zu unterdrücken...

  • Auch das haette sich erledigt, wenn Du einfach eine Library anstatt der mail() Funktion nutzen wuerdest. Siehe Deinen SPAM Thread. ;)

    wenn ich es igendwie hinbekomme, dann werde ich den Einbau mal versuchen

    Ohne das Skript zu kennen, mit dem die Nachrichten verwendet werden, sieht das nach Leerzeilen in den Headern aus (was nicht erlaubt ist). Manche Clients sind wohl so schlau das zu erkennen und zu unterdrücken...

    hier der Code-Auszug:

  • ! Zeile 46 !

    PHP
    <p>Hinweis:<br />
    Hinweistext:</p>
    			if(!$altSignUp)


    Fehlende schließende Anführungszeichen und Semikolon ( '; )! (Zeilenangabe in Bezug auf den von die gepoteten Code)


    Ich hab deinen Code erstmal durch den Auto-Indent von meinem Editor gejagt, jetzt kann man ihn wenigstens einigermaßen lesen... :P


    Könnte dieser eine kleinen Fehler ggf. bereits der Grund für deine Probleme sein? Mich wundert es, dass das Script überhaupt ausgeführt wurde ohne einen Fehler auszuschmeißen, bzw der content output abgebrochen wurde.
    Kannst du leicht überprüfen indem du ans ende der datei ein echo "Test!"; setzt und falls es nicht erscheint so lange nach oben schiebst bis es erscheint. Klingt bescheuert, ist aber oft der schnellste Weg um den Teil eines Scripts zu finden der Probleme verursacht.


    Falls das nicht des Rätsels Lösung ist brauch ich mehr Infos... Die Header sehen (Soweit ich das um ca. 1 Uhr nachts beurteilen kann) in Ordnung aus.


    Fix erstmal den groben schnitzer und dann sehen wir weiter.


    Das ganze hier nochmal in Aufgeräumt, nur ums anderen Helfern ggf einfacher zu machen:


  • Hallo,


    nein dies ist nicht der Fehler. Der Hinweistext von mir war zu lange, daher habe ich ihn gekürzt. Dabei sind mir hier leider das die Beiden '; abhanden gekommen.
    Es sieht bei mir aber so aus.

    PHP
    <p>Hinweis:<br />
    Hinweistext:</p>';


    Wenn der header soweit ok ist, woran könnte es noch liegen?


    Gruß tsp

  • Hmm, es gäbe jetzt so einiges auszuschließen... du verwendest kein trim() und auch sonst nichts um aus deinen POST variablen sonderzeichen etc. rauszufiltern die die mail stören könnten. Das ist schonmal das 1. Aber während du testest, wirst du da sicherlich nur normale eingaben machen.


    An deiner Stelle würde ich einfach mal eine ganz einfache mail funktion basteln
    $to = "abc@deine-mail.de";
    $subject = "Test email";
    $text = "Hallo, das ist eine Test email.";
    mail($to, $subject, $text, [$header]);


    Der Header ist optional. Teste halt erstmal grundsätzlich deine mail funktion.
    DANN fügst du den von dir erstellten Header dazu und sendest wieder eine email.
    Wenn sie dann noch normal aussehen fügst du dein etwas... seltsames... subject hinzu, warum nutzt du da base64? Eigentlich auch egal, wenn du das gerne hättest düfte es eigentlich nicht stören.
    Im nächsten Schritt fügst du deinen Text hinzu.


    Sollte durch den Text der Fehler hervorgerufen werden, teile ihn in der Mitte und kommentiere die hälfte aus. Wenn der Fehler dann nichtmehr rekonstruiebr ist lieder der Fehler in dem Bereich. Das Halbieren kannst du solange wiederholen, bis du den Fehler gefunden hast. (Erinnert mich an Mathe Lim(x/2) --> 0 - Limes gegen 0 lol 8o )


    Jetzt werden einige die Hände übern Kopf zusammenschlagen, weil das kein Professionelles Debugging ist, aber aus meiner Sicht ist es bei den meisten Fehlern mit die effizienteste Methode, wenn man keine Idee hat wo man ansetzten soll. Zumindest ist die Methode verlässlich zum aufspüren von Fehlern, wenn auch aufwendig.


    Ich möchte aber nochmal anmerken, dass dir bereits einen PHP Mailing Libary vorgeschlagen wurde. Diese hat meistens interne funktionen die die argumente auf validität prüfen und kleine Fehler rausfiltern. Somit könnte das für dich ggf der einfachere Lösungsweg sein.

  • Davon abgesehen, dass dein Code angreifbar ist (Header-Injection – Wikipedia), fügst du nach dem letzten Header einen Zeilenumbruch ein, daran könnte es ggf. liegen.


    Du meinst hier

    PHP
    $header .= 'MIME-Version: 1.0'."\r\n".'Content-Type: text/html; charset=UTF-8'."\r\n";


    und hier

    PHP
    $header='From: "'.$_POST['vorname'].' '.$_POST['nachname'].'" <'.$_POST['email'].'>'."\r\n".'MIME-Version: 1.0'."\r\n".'Content-Type: text/html; charset=UTF-8'."\r\n";
  • ich habe mir jetzt mal den tipp mit dem phpmailer zu herzen genommen. runtergeladen und getestet. allerdings kenne ich mich nicht so gut aus, weshalb ich nicht genau weiß, wie und wo genau der code in mein script eingebaut werden muss.


  • Du hast da ein Beispielscode der so ziemlich alle Funktionen auflistet. Ich setze mal vorraus, das du einigermaßen Englisch sprichst. Dann ist das ganze eigenlich selbst erklärend.


    Port 25 müsste ja passen, bei host musst du halt höchstwahrscheinlich "localhost" einsetzten oder alternativ "127.0.0.1". Nutze selbst keine Libary fürs mailen, bin bisher mit der standartfunktion zufrieden...

  • Das Problem war wohl

    PHP
    "\r\n"

    in den Headern, ich habe jetzt nur

    PHP
    "\n"

    dort stehen und die mails schauen besser aus. Ebenso geht jetzt nichts mehr in Spam.


    hier erfolgt kein mailversand

  • :cursing: Ich interprätiere das mal als... ?(
    Ja was soll ich dazu nun sagen, du hast keinerlei Konfiguration vorgenommen! 8| :thumbdown:


    Du musst schon den Host, Port, Passwort und deine eMail entsprechend eintragen. Eine hellsehende Libary ist wohl noch nicht erfunden! Hoffentlich! :S
    Und selbstverständlcih die Teile des Codes entfernen die du nicht brauchst, beispielsweise den Anhang! Was erzähl ich hier eigentlich... :wacko:


    Lies doch einfach mal die Bedienungsanleitungen! Du stürzt dich grade volle Kanone auf den IKEA Schrank mit Holzleim in der einen und einem Brecheisen in der anderen Hand, ohne vorher in die Bauanleitung zu schauen und wunderst dich, dass am Ende nicht der Schrank bei raus kommt der auf der Verpackung Abgebildet ist!!! :!: 8o


    Und damit nun... Gute Nacht! :|

  • ganz blond bin ich auch nicht ;)


    Port, Host, Username, Passwort, set from, addreplyto habe ich selbstverständlich in die korrekten Zugangsdaten umgewandlet. Diese wollte ich nur so nicht öffentlich posten.

  • Ok, du verwirrst mich, bald hast du mich so weit gebracht dass ich dir den PHP Schnipsel schreibe! 8| :huh: :S :cursing: :|


    Poste mal deinen gesamten PHP Code mit allen korrekten Angaben AUßER dem Passwort. Deine eMail Adresse kannst du von mir aus auch zensieren aber hier im Forum wird dich schon keiner zuspammen...

  • Das hat nichts mit Foren zu tun, sondern mit Bots Niconator. Lass mal deine Mailadresse ohne JS ein paar Monate lang auf einer Webseite stehen, Dann wirst du bombardiert mit Spam.

    Ist mir bekannt, aber ehrlich gesagt störts mich nicht sonderlich... Hast aber grundsätzlich schon Recht mit dem was du sagst.
    Die info@domain.com adresse unserer Firma wird zugespammt ohne ende, da diese Email halt 1000 fach im Netz zu finden ist, doch die mails landen alle im Spam ordner und werden nach einer Weile automatisch gelöscht. Um meine private Mail stehts nicht ganz so schlimm, bekomme auch etwas spam, doch für mich gehört das so zum leben dazu wie die unerwünschten Werbeblätter die man jeden Morgen im Briefkasten findet...