webForumDet fria alternativet

Problem med PHP/mailscript för HTML

2 svar · 275 visningar · startad av Droopy

DroopyMedlem sedan mars 200315 inlägg
#1

Hej! Först skall jag säga att jag inte alls kan PHP, men jag har hittat ett enkelt skript på nätet som dock inte verkar fungera till 100%, och jag vore tacksam om någon kunnig person skulle kunna hjälpa till att identifiera felet. Syftet är att skapa en enkel (tillfällig) sida för hälsningskort, som skickas iväg som HTML-mejl. Så här ser det ut i anonymiserat skick, det är ursprungligen hämtat från https://www.shopkanji.com men verkar inte längre finnas uppe i originalform.

<?php
                 $tname = stripslashes($_REQUEST["tname"]) ;
                 $temail = $_REQUEST["temail"] ;
                 $yname = stripslashes($_REQUEST["yname"]) ;
                 $yemail = $_REQUEST["yemail"] ;
                 $greeting = $_REQUEST["greeting"] ;
                 $message = nl2br($_REQUEST["message"]) ;
                 $close = $_REQUEST["close"] ;
                 $image = $_REQUEST["image"] ;
                 $background = $_REQUEST["background"] ;
                 $fonts = $_REQUEST["fonts"] ;
                 $fontc = $_REQUEST["fontc"] ; 

$body = '<html><body bgcolor="';
                 $body .= "$background";
                 $body .= '"><br><table width="500"                  border="0" align="center" cellpadding="10"                  cellspacing="0"><tr><td width="320"                  align="left" valign="top"><a href="http://[source]"><img src="';
                 $body .= "$image";
                 $body .= '" width="305" height="420"                  border="0"></a></td><td align="left"                  valign="top"><p><font face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">';
                 $body .= stripslashes("$greeting");
                 $body .= ' ';
                 $body .= stripslashes("$tname");
                 $body .= ',</font></p><p><font face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">';
                 $body .= stripslashes("$message");
                 $body .= '</font></p><p><font face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">';
                 $body .= stripslashes("$close");
                 $body .= ',</font></p><p><font face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">';
                 $body .= stripslashes("$yname");
                 $body .= '</font></p></td></tr></table><br><hr                  width="500" noshade><div align="center"><a                  href="http://[source]"><font                  face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">Send ';
                 $body .= "$yname";
                 $body .= ' or another friend an E-card.</font></a><br><hr                  width="500" noshade><br><table width="500"                  border="0" cellspacing="0" cellpadding="0"><tr><td                  align="center"><p><a href="http://"><font                  face="';
                 $body .= "$fonts";
                 $body .= '" color="';
                 $body .= "$fontc";
                 $body .= '">xxx</font></a></p></td></tr></table></div></body></html>';

$headers = "MIME-Version: 1.1\r\n";
                 $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
                 $headers .= "From: $yname <$yemail>\r\n";
                 $headers .= "Disposition-Notification-To: $yname <$yemail>\r\n";
                 
                 $copy = "MIME-Version: 1.0\r\n";
                 $copy .= "Content-type: text/html; charset=iso-8859-1\r\n";
                 $copy .= "From: [X] <sender@address>\r\n";
                 
                 mail( "$temail", "$yname has sent you an E-Card!",                  $body, $headers );
                 
                 mail( "$yemail", "You have just sent $tname an E-Card!", $body, $copy );
                 
                 header( "Location: http://[source]"                  );
                 
                 ?>

Problemet är nu att korten som skickas inte visas som HTML vid framkomsten utan som kod i vissa mejlprogram (Mail, Entourage) medan det verkar fungera som det ska i t.ex. Hotmail och Chello Webmail. Vet inte om det beror på något fel i själva PHP-kodningen - vad jag förstår är det "$headers .= "Content-type: text/html" som skall styra detta? - eller om felkällan kan ligga någon annanstans? Och vad kan man i så fall göra åt det? Tacksam för alla slags råd, tips och förslag. :)

DroopyMedlem sedan mars 200315 inlägg
#2

Ingen som har något förslag, var det en svår eller dum fråga? :r Utifrån mitt amatörperspektiv har jag mycket svårt att begripa hur skriptet kan generera header-information som accepteras som HTML i vissa mejlklienter men inte i andra? Någon som känner igen problematiken och kan ge en ledtråd till en möjlig lösning? Vore extremt tacksam för någon insiktsfull synpunkt.

joneloMedlem sedan feb. 200622 inlägg
#3

Testa med att även lägga till denna header:
Content-Transfer-Encoding: 8bit

Alltså:

$headers = "MIME-Version: 1.1\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "From: $yname <$yemail>\r\n";
$headers .= "Disposition-Notification-To: $yname <$yemail>\r\n";
134 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)