Chris: mail(): Versand von Multipart-Messages klappt nicht

Hallo zusammen

Ich möchte mit Hilfe der mail() Funktion von PHP ein E-mail verschicken, dass je nach verwendetem E-mail-Client des Empfängers den Inhalt falls möglich im HTML-Format und ansonsten im Text-Format anzeigt. Unten aufgeführt seht ihr den PHP-Code den ich verwende. Leider enthält dieser einen Fehler. Die Trenner Namens 'alternative-boundary' werden angezeigt. Zudem wird mir z.B. in Outlook nebst den Trennern sowohl die Text, als auch die HTML-Version ausgegeben. Was mache ich falsch? Danke für jeden Ratschlag!

Gruss Chris

Hier der Code:

<?php
$to      = "mich@domain.de";
$subject = "Betreff";
$header .= "From: jemand@domain.de(Unbekannter User)\r\n";

$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative boundary="alternative-boundary"\n";

$message .= "--alternative-boundary";
$header .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$message .= "Dies ist ein Textnachricht.\n";

$message .= "--alternative-boundary";
$header .= "Content-Type: text/html\n";
$header .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "<html>...</html>\n";
$message .= "--alternative-boundary--";

mail($to,$subject,$message,$header);

header('Location: http://www.domain.de');
exit;
?>

  1. Halihallo Chris

    $message .= "--alternative-boundary";
    $header .= "Content-Type: text/plain; charset="iso-8859-1"\n";
    $header .= "Content-Transfer-Encoding: 7bit\n";
    $message .= "Dies ist ein Textnachricht.\n";

    Diese Headerinformationen gehören zum _body_ der Mail, nicht zu deren Header!

    $message .= "--alternative-boundary";
    $header .= "Content-Type: text/html\n";
    $header .= "Content-Transfer-Encoding: quoted-printable\n";
    $message .= "<html>...</html>\n";
    $message .= "--alternative-boundary--";

    ebenso hier. Einfach die $header durch $message ersetzen.

    zudem werden Header vom Content/Body durch _zwei_ Zeilenumbrüche getrennt! - Du hast in jedem Fall nur einen gesetzt.

    Viele Grüsse

    Philipp

    1. Habe es mal so probiert. Leider funktioniert diese Variante ebenfalls nicht. Was ist daran falsch? Habe ich etwas falsch verstanden?

      $message .= "--alternative-boundary";
      $message .= "Content-Type: text/plain; charset="iso-8859-1"\n";
      $message .= "Content-Transfer-Encoding: 7bit\n\n";
      $message .= "Dies ist ein Textnachricht.\n";

      $message .= "--alternative-boundary";
      $message .= "Content-Type: text/html\n";
      $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
      $message .= "<html>...</html>\n";
      $message .= "--alternative-boundary--";

      Gruss Chris

      1. Hallo Chris,

        Habe es mal so probiert. Leider funktioniert diese Variante ebenfalls nicht.

        Ich hab' den Fehler! (s.u.)

        Was ist daran falsch? Habe ich etwas falsch verstanden?

        An dem Message-Content ist nichts _weiteres_ falsch.

        Aber: Am Header ist was falsch, Du schreibst:

        $header .= "Content-Type: multipart/alternative boundary="alternative-boundary"\n";
                                                       ^
        da fehlt ein Semikolon

        Grüße,

        Christian

        --
        Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.
        1. Aber: Am Header ist was falsch, Du schreibst:

          $header .= "Content-Type: multipart/alternative boundary="alternative-boundary"\n";
                                                         ^
          da fehlt ein Semikolon

          Du hattest recht! Nun klappt alles wunderbar! Vielen Dank!!

          Gruss Chris