HTML-eMail Problem

Metha

Mitglied
So nu reichts mir. Ich hänge schon viel zu lange an diesem Problem fest.

Problem: Der Text bzw. Code der HTML-eMail wird nicht angezeigt.

Mailfunktion:
PHP:
function mailanzeige(){
		global $name, $email, $web, $icq, $betreff, $text;
		// Das steht noch im Head der "kontakt_email.htm"
		// <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		$inhalt=file_get_contents('kontakt_email.htm');
		$text=nl2br($text);
		$inhalt=str_replace('{name}', $name, $inhalt);
		$inhalt=str_replace('{email}', $email, $inhalt);
		$inhalt=str_replace('{web}', $web, $inhalt);
		$inhalt=str_replace('{icq}', $icq, $inhalt);
		$inhalt=str_replace('{betreff}', $betreff, $inhalt);
		$inhalt=str_replace('{text}', $text, $inhalt);
		$mailtext=$inhalt;}

eMail-Versandt
PHP:
$extra="From: $name <$email>\n";
$extra.="Content-Type: text/html\n";
$extra.="Content-Transfer-Encoding: 8bit\n";
mailanzeige();
mail($empfänger, $betreff, $mailtext, $extra);

eMail Code:
Code:
Return-Path: <apache@confixx2.dclux.com>
X-Flags: 0000
Delivered-To: GMX delivery to metha-inc@gmx.de
Received: (qmail 30974 invoked by uid 65534); 5 Dec 2004 22:08:10 -0000
Received: from unknown (EHLO confixx2.dclux.com) (80.92.67.239)
  by mx0.gmx.net (mx051) with SMTP; 05 Dec 2004 23:08:10 +0100
Received: by confixx2.dclux.com (Postfix, from userid 81)
	id B1E1FAEC028; Sun,  5 Dec 2004 23:27:07 +0100 (CET)
To: metha-inc@gmx.de
Subject: Bla, Blubb, Schwaller, Sülz
From: arno nym <arnonym@egal.de>
Content-Type: text/html
Content-Transfer-Encoding: 8bit
Message-Id: <20041205222707.B1E1FAEC028@confixx2.dclux.com>
Date: Sun,  5 Dec 2004 23:27:07 +0100 (CET)
X-GMX-Antivirus: -1 (not scanned, may not use virus scanner)
X-GMX-Antispam: -2 (not scanned, spam filter disabled)

Die Variablenübergabe ect. funktioniert auch alles wunderbar. Das Script ist soweit auch fertige und funktionstüchtig, bis auf eine Sache.
Eine eMail wird Versandt, kommt auch an, enthält aber keinen Text/Content/Inhalt oder wie man es auch nenne will.

Hat jemand eine Ahnung woran es leigen kann?

PS: Habe nur die relevanten Teile des Scriptes gepostet, damit ich hier nicht den Post Vollbombe.
 
Ähhhmmm.....

deine Funktion mailanzeige () ist setzt zwar $mailtext, allerdings reicht der Aufruf nicht aus. Du solltest der Funktion einen Ausdruck verpassen.
PHP:
function mailanzeige ()
{
...
return $mailtext;
}
$mailtext = mailanzeige ();
mail (...);
 
Hat $mailtext wenigstens den richtigen Inhalt? Bitte gib' mal einen richtigen Debug-Report. Welche Variablen sind wie gesetzt...
 
Wenn ich testweise beim eMail-Versandt
PHP:
...
echo mailanzeige();
mail($empfänger, $betreff, $mailtext, $extra);

einsetze, wird das Template kommplett mit den Richtigen Variablen angezeigt. Also in dem Webinterface! Somit ist die funktion eigentlich richtig!

Wie ich schon erwähn hatte, funktioniert alles!
Der Knackpunkt ist der, das des Ergebnis der Funktion mailanzeige() nicht an $mailtext übergeben wird. wenn ich z.b.

PHP:
...
$mailtext='Bla Blubb'
mail($empfänger, $betreff, $mailtext, $extra);

verwende, wird der Text auch angezeit, halt nur nicht als HTML-Mail.
 
Dann probier mal folgende Header:
PHP:
	$headers = "From: $from_name<$from_email>\r\n";
	$headers .= "Reply-To: <$from_email>\r\n";
	$headers .= "MIME-Version: 1.0\r\n";
	$headers .= "Content-Type: multipart/mixed; boundary=\"MIME_BOUNDRY\"\r\n";
	$headers .= "X-Sender: $from_name<$from_email>\r\n";
	$headers .= "X-Mailer: PHP4\r\n"; //mailer
	$headers .= "X-Priority: 3\r\n"; //1 UrgentMessage, 3 Normal
	$headers .= "Return-Path: <$from_email>\r\n";

	$message = "--MIME_BOUNDRY\n";
	$message .= "Content-Type: text/html;\n\n";
	$message .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
... HTML
	$message .= "--MIME_BOUNDRY--\r\n";
 
Nein, absolut nichts.

Ich glaube ich werde das mal ändern mit der mailanzeige();
Wobei ich finde, dass dies eine recht gute Variante ist.
Nunja, danke für deine Hilfe won_gak

Wer dennoch eine Idee hat kann se gerne Posten.

Mfg Metha
 
So, ich habe nun nochmal alles durchgecheckt und bin zu folgendem Ergebnis gekommen.

PHP:
$extra="From: $name <$email>\n";
$extra.="Content-type: text/html\n";
$extra.="Content-Transfer-Encoding: 8bit\n";
$mailtext='<center>Die HTML Mail geht</center>';
mail($empfänger, $betreff, $mailtext, $extra);

Wenn ich also der Variablen $mailtext einen Text zuweise, der HTML Tags aufweißt, dann wird er auch richtig, als zentrierter Text ohne die Tags, angezeigt.

Verwende ich aber nun diese Funktion:
PHP:
	function mailanzeige(){
		global $name, $email, $web, $icq, $betreff, $text;
		$inhalt=file_get_contents('kontakt_email.htm');
		$text=nl2br($text);
		$inhalt=str_replace('{name}', $name, $inhalt);
		$inhalt=str_replace('{email}', $email, $inhalt);
		$inhalt=str_replace('{web}', $web, $inhalt);
		$inhalt=str_replace('{icq}', $icq, $inhalt);
		$inhalt=str_replace('{betreff}', $betreff, $inhalt);
		$inhalt=str_replace('{text}', $text, $inhalt);
		$mailtext=$inhalt;}

...mit diesem Mailaufruf:
PHP:
$extra="From: $name <$email>\n";
$extra.="Content-type: text/html\n";
$extra.="Content-Transfer-Encoding: 8bit\n";
mailanzeige();
mail($empfänger, $betreff, $mailtext, $extra);

dann wird mir überhaupt kein Inhalt in der eMail angezeigt.

Ich habe die Funktion auch mal als echo ausgegeben, um die funktionalität der Funktion zu testen. Dann wurde die Funktion komplett richtig ausgeführt!

Also kann es nur an der "übergabe" des $mailtext(es) an den mail()-Versandt leigen.
Hat jemand eine Ahnung, was ich da falsch mache?
 
Die Variable $mailtext wird nirgendswo gesetzt.
Das echo mailanzeige(); eine Ausgabe bringt, kann nicht sein. Schreib in die Funktion ein return $mailtext; und binde sie wie folgt ein. Dann funktioniert es.
PHP:
 $extra="From: $name <$email>\n";
$extra.="Content-type: text/html\n";
$extra.="Content-Transfer-Encoding: 8bit\n";
mail($empfänger, $betreff, mailanzeige(), $extra);
 
Zurück