hawkmaster: Email Versand (HTML) geht nicht mehr

Hallo zusammen,
mit unten stehender Funktion hatte ich bisher problemlos Mails von meinem 1und1 Webspace versenden können.

  
function html_mail($sendto,$subject,$text)  
{  
$date = date("D, d M Y H:i:s O");  
$header  = 'MIME-Version: 1.0' . "\r\n";  
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";  
$header.= "Date: $date\n";  
$header.= "From: Der Name <andreas@example.com>\n";  
$msg_body.="<br>\n";  
$msg_body.="Zusammenfassung\n";  
$msg_body.="<br><br>\n";  
$msg_body.= "$text\n";  
//$msg_body.= "Nur ein Test\n";  
$msg_body.="<br><br>\n";  
  
mail($sendto, stripslashes($subject), $msg_body, $header) or print "Konnte die HTML-Mail nicht versenden";  
}  

Das Problem scheint an $msg_body zu liegen sobald ich $text übergebe. In $text steht eine HTML Tabelle <table>... </table>.
Kommentiere ich diese Zeile aus und mache dafür "$msg_body.= "Nur ein Test\n";"
dann wird die Mail versendet.
Leider konnte mir auch der Support von 1und1 nicht helfen

Hat jemand eine Idee was es sein könnte?

vielen Dank und viele Grüße
hawk

  1. Hallo,

    $msg_body.="<br>\n";
    $msg_body.="Zusammenfassung\n";
    $msg_body.="<br><br>\n";
    $msg_body.= "$text\n";
    //$msg_body.= "Nur ein Test\n";
    $msg_body.="<br><br>\n";

    mail($sendto, stripslashes($subject), $msg_body, $header) or print "Konnte die HTML-Mail nicht versenden";

    Das Problem scheint an $msg_body zu liegen sobald ich $text übergebe. In $text steht eine HTML Tabelle <table>... </table>.
    Kommentiere ich diese Zeile aus und mache dafür "$msg_body.= "Nur ein Test\n";"
    dann wird die Mail versendet.

    wie umfangreich ist denn die HTML-Tabelle, die du einfügst? Und hat der HTML-Quelltext Zeilenumbrüche? - Eine einzelne Zeile innerhalb des Mail-Body darf AFAIK maximal knapp 1000 Zeichen lang sein.

    Leider konnte mir auch der Support von 1und1 nicht helfen

    Nun, mein Hinweis ist zunächst auch nur ein Schuss ins Blaue ...

    So long,
     Martin

    --
    Die letzten Worte des Fallschirmspringers:
    ELENDE SCHEISSMOTTEN!!
    1. Hallo Martin,
      danke für deine Hilfe.

      Also die HTML Tabelle kann schon recht groß werden. (z.b. 71kb)
      und ja sie hat in jeder Zeile "LF" bzw. "CRLF" stehen.

      Mich wundert halt warum es noch vor kurzem ging und jetzt nicht mehr.
      Habe weder am Script noch an den Daten was geändert.

      vielen Dank und viele Grüße
      hawk

  2. Hi,

    mir fällt da gerade noch was auf:

    $header  = 'MIME-Version: 1.0' . "\r\n";
    $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $header.= "Date: $date\n";
    $header.= "From: Der Name andreas@example.com\n";

    Die ersten beiden Header schließt du mit \r\n ab, die anderen beiden nur mit \n. War das schon immer so?
    Die Spezifikationen von SMTP verlangen \r\n als Trennzeichen, das auf Unix-artigen Systemen übliche sendmail-Script wandelt, wie hier im Forum schon mehrmals berichtet wurde, \n automatisch in \r\n um. Aber was tut es mit \r\n? Werden die zu \r\r\n erweitert?
    Zumindest sorgst du für Verwirrung, wenn du beide Notationen gemischt verwendest.

    Ciao,
     Martin

    --
    "Drogen machen gleichgültig."
     - "Na und? Mir doch egal."
    1. Hello,

      Die Spezifikationen von SMTP verlangen \r\n als Trennzeichen, das auf Unix-artigen Systemen übliche sendmail-Script wandelt, wie hier im Forum schon mehrmals berichtet wurde, \n automatisch in \r\n um. Aber was tut es mit \r\n? Werden die zu \r\r\n erweitert?

      Es werden sowohl "\r" als auch "\n" zu vollständigen "\r\n" verwandelt.

      Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.

      $message einfach leer lassen, und alles über $header regeln.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hallo Tom,
        danke auch dir.

        Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.

        ja das glaube ich auch so langsam.
        Ich habe es jetzt mal so geändet, dass ich den ganzen HTML Inhalt als Anhang versende. Dann klappt es.
        Ich wollte es ursprünglich in der Mail haben.
        Aber warum es jetzt nicht mehr geht weiss ich nicht.

        vielen Dank und viele Grüße
        hawk

        1. Hello,

          Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.

          ja das glaube ich auch so langsam.
          Ich habe es jetzt mal so geändet, dass ich den ganzen HTML Inhalt als Anhang versende. Dann klappt es.
          Ich wollte es ursprünglich in der Mail haben.
          Aber warum es jetzt nicht mehr geht weiss ich nicht.

          Es ist ja "in der Mail".

          Dass es nun nicht mehr klappt, und früher mal funktioniert hat, liegt eventuell am Zeichensatz.
          Ist der Server umgestellt worden von ISO-8859-1 auf UTF-8?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de