frank: Fehler im PHP Formmailer

hallo leute,

ich habe mir einen formmailer in php geschrieben.
der formmailer dient als kleiner newsletter, leute können sich mit ihren benutzerdaten einloggen und erhalten dann regelmäßig post.
der user kann auch sein gewünschtes format (text/plain oder html) auswählen, zusätzlich ist der mailer per mysql anbindung personalisierbar.

lerider klappt irgendwas in der ausgabe des mailers nich.
es wird mehrmals der mailheader angezeigt so dass mail falsch codiert werden und nicht richtig ankommen.

hier mal der komplette code, ich habe alles gepostet, damit man sich einen überblick verschaffen kann, der fehler liegt denke ich irgendow im switch.

else if(($_POST[new_letter]=="1") && ($_POST[headline]) && ($_POST[text]))
{
$date = time();
$q_news = "INSERT INTO ".letter." (betreff,text,date) VALUES ('$_POST[headline]','$text','$date')";
 $r_news = mysql_db_query($db,$q_news,$verbindung);

$htmltext = $_POST[text];
 $blanktext = $htmltext;
 $blanktext = eregi_replace("<HR color=#ffcc00 noShade SIZE=2>", "\n------------------------------------------------------------------\n", $blanktext);

$blanktext = ereg_replace('<[^>]*>','',$blanktext);
 $blanktext = wordwrap( $blanktext, 67 );

$boundary = strtoupper(md5(uniqid(time())));

$betreff = $_POST[headline];
 $letterid = $_POST[letterid];
 $date = date('d.m.y');
 $absender = "info@xxxxxxxxxxx.de";
 $absendername = "absendername";

$xtra = "From: ";
 $xtra .= $absendername;
 $xtra .= "<";
 $xtra .= $absender;
 $xtra .= ">";
 $xtra .= "\nReply-To: ";
 $xtra .= $absender;
 $xtra .= "\nReceipt-To: ";
 $xtra .= $absender;
 $xtra .= "\nX-Mailer: PHP/";
 $xtra .= phpversion();
 $xtra .= "\nX-Sender-IP: ";
 $xtra .= $REMOTE_ADDR;
 $q_lettersend = "SELECT * FROM ".newsletter." WHERE published='1'";

$r_lettersend = mysql_db_query($db,$q_lettersend,$verbindung);
 while($lettersend = mysql_fetch_array($r_lettersend))
 {
 $unsubscripe = "http://www.xxxxxxxxxxx.de/newsletter.php?subscribe=".$lettersend[authlinkmd5]."&pub=0&del=1";
        $empfaenger = $lettersend[mailadress];

$charray = array
 (
 "{date}" => $date,
 "{letterid}" => $letterid,
 "{empfaenger}" => $empfaenger,
 "{betreff}" => $betreff,
 "{htmltext}" => $htmltext,
 "{blanktext}" => $blanktext,
 "{sexanrede}" => $lettersend[sex],
 "{surname}" => $lettersend[surname],
 "{unsubscripe}" => $unsubscripe,
 );
 $tplfileplain = $uri."/redaktion/".TEMPLATES."/newsletter_send_plain.php";
 $templateplain = join(' ', file($tplfileplain));
 $outvarplain =strtr($templateplain, $charray);
 $tplfile = $uri."/redaktion/".TEMPLATES."/newsletter_send_html.php";
 $template = join(' ', file($tplfile));
 $outvarhtml =strtr($template, $charray);

switch($lettersend[format])
 {
 case "html":
 $xtra .="\nMIME-Version: 1.0";
 $xtra .="\nContent-Type: multipart/alternative;
 boundary="NextPart_".$boundary.""";
 $meldung = "This is a multi-part message in MIME format.\n\n";
 $meldung .= "--NextPart_".$boundary;
 $meldung .="\nContent-Type: text/plain; charset=iso-8859-1";
 $meldung .="\nContent-Transfer-Encoding: 8bit";
 $meldung .="\n\n";
 $meldung .= $outvarplain;
 $meldung .="\n\n";
 $meldung .= "--NextPart_".$boundary;
 $meldung .="\nContent-Type: text/html; charset=iso-8859-1";
 $meldung .="\nContent-Transfer-Encoding: 8bit";
 $meldung .="\n\n";
 $meldung .= $outvarhtml;
 $meldung .="\n\n";
 mail($empfaenger,"Newsletter Nr.: $letterid || $betreff",$meldung,$xtra);
        break;
 case "text/plain":
        $xtra .="\nContent-Type: text/plain; charset=iso-8859-1";
 $meldung = $outvarplain;
 mail($empfaenger,"Newsletter Nr.: $letterid || $betreff",$meldung,$xtra);
 break;
 }
};
}

  1. hallo leute,

    ich habe mir einen formmailer in php geschrieben.
    der formmailer dient als kleiner newsletter, leute können sich mit ihren benutzerdaten einloggen und erhalten dann regelmäßig post.
    der user kann auch sein gewünschtes format (text/plain oder html) auswählen, zusätzlich ist der mailer per mysql anbindung personalisierbar.

    lerider klappt irgendwas in der ausgabe des mailers nich.
    es wird mehrmals der mailheader angezeigt so dass mail falsch codiert werden und nicht richtig ankommen.

    hier mal der komplette code, ich habe alles gepostet, damit man sich einen überblick verschaffen kann, der fehler liegt denke ich irgendow im switch.

    genau. da liegt er auch!!!

    unzwar im Content-Type Header.
    Du solltest schon text/html als Content-Type angeben, sonst ist es ja keine html-email

    $meldung .="\nContent-Type: text/html; charset=iso-8859-1";

    mfg
    agent