Autor Zpráva
Frozen
Profil
Zdravím, chtěl jsem se zeptat zda-li se někdo z Vás nesetkal s tím, že phpmailer občas odešle špatně html, tudíž nenaformátuje tabulku zcela dobře, ale v jednom řádku třeba vynechá sloupec a vypíše html značku textově nad tabulku.

Pro ilustraci:
text
.
.

.
.
text

Předem děkuji za jakékoliv postřehy.
Alphard
Profil
Radši sem dejte zdroják.
Frozen
Profil
Přikládám tedy zdrojový kód
// je pocet produktu
$x=0;
$objednavka_mail_nahled = "<table style='width:600px;background-color:#FDECEE;border-spacing:0px;'><th style='background-color:#A8101F;color:white;'>zboží</th><th style='background-color:#A8101F;color:white;'>vlastnosti</th><th style='background-color:#A8101F;color:white;'>množství</th><th style='background-color:#A8101F;color:white;'>cena za kus</th><th style='background-color:#A8101F;color:white;'>celková cena</th>";
// nuluju zas celkovou cenu
$celkova_cena = 0;
while($x < $pocet_produktu){

// zde si naberu promene
$produkt = $_POST["produkt_id_".$x];
$prvni_atribut = $_POST["atribut_1_".$x];
$druhy_atribut = $_POST["atribut_2_".$x];
$mnozstvi = $_POST["mnozstvi_".$x];

//rovnou nahazim produkty do DB
MYSQL_QUERY("INSERT INTO objednavky_kosik(id_objednavky, produkt_id, atribut_1, atribut_2, mnozstvi)VALUES('{$cislo_objednavky[0]}', '$produkt', '$prvni_atribut', '$druhy_atribut', '$mnozstvi' )");

// informace o produktu
$sql = mysql_query("SELECT * FROM produkty WHERE id = $produkt");
$produkt_info = mysql_fetch_array($sql);

//pro kazdy produkt vytvorim radek do tablu v mailu
$objednavka_mail_nahled .= "<tr><td style='padding-left:10px;'>".$produkt_info['nazev']."</td><td style='text-align:center;'>".($prvni_atribut != '' ? "$prvni_atribut $druhy_atribut" : "-")."</td><td style='text-align:center;'>".$mnozstvi."</td><td style='text-align:right;'>".number_format($produkt_info['cena'], 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td><td style='text-align:right;'>".number_format($produkt_info['cena']*$mnozstvi, 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td></tr>";

// zadám si cenu za produkt * mnozstvi celkem
$cena_celkem = $produkt_info['cena']*$mnozstvi;
$sql_dan = mysql_query("SELECT * FROM dan WHERE id in (SELECT id_dan FROM produkty WHERE id = '{$produkt_info['id']}')");
$vypis_dane = mysql_fetch_array($sql_dan);
$dan[$vypis_dane['id']] = $cena_celkem/(100+$vypis_dane['procenta'])*$vypis_dane['procenta']+$dan[$vypis_dane['id']];
                                                                                                                                                                                                           
$celkova_cena = $celkova_cena + $produkt_info['cena']*$mnozstvi;
$x++;
}
foreach($dan as $key => $value){
$sql_info_dan = mysql_query("SELECT * FROM dan WHERE id = '$key'");
$dan_info = mysql_fetch_array($sql_info_dan);

$dan_k_nakupu[$key]['nazev'] = $dan_info['nazev'];
$dan_k_nakupu[$key]['znak'] = $dan_info['znak'];
$dan_k_nakupu[$key]['procenta'] = $dan_info['procenta'];
$dane_celkem = $value + $dane_celkem;

}
$cena_bez_dph = $celkova_cena - $dane_celkem;

// zjisteni dopravy podle ID
$sql = mysql_query("SELECT * FROM doprava WHERE id = $doprava");
$doprava_info = mysql_fetch_array($sql);
if($celkova_cena < DOPRAVA_ZDARMA)$doprava_cena = $doprava_info['cena'];
else $doprava_cena = 0;
// zjisteni platby podle ID
$sql = mysql_query("SELECT * FROM platba WHERE id = $platba");
$platba_info = mysql_fetch_array($sql);


//zapsani dopravy, platby a ceny do tablu v mailu
$objednavka_mail_nahled .="<tr style='background-color:#FFFFD2;'><td style='padding-left:10px;'>Doprava (".$doprava_info['nazev']."): </td><td></td><td></td><td></td><td style='text-align:right;'>".($doprava_cena == '0' ? "<span style='color:#509904; font-weight:bold;'>zdarma</span>" : number_format($doprava_cena, 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY )."</td></tr>";
$objednavka_mail_nahled .="<tr style='background-color:#FFFFD2;'><td style='padding-left:10px;'>Platba (".$platba_info['nazev']."): </td><td></td><td></td><td></td><td style='text-align:right;'>".number_format($platba_info['cena'], 2, ', ', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td></tr>";
$objednavka_mail_nahled .="<tr style='background-color:#E9E9E9;'><td style='padding-left:10px;'>Cena celkem bez DPH: </td><td></td><td></td><td></td><td style='text-align:right;'>".number_format($cena_bez_dph, 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td></tr>";
foreach($dan_k_nakupu as $key => $value){
$objednavka_mail_nahled .="<tr style='background-color:#E9E9E9;'><td style='padding-left:10px;'>{$value['znak']}(".$value['procenta']."%):</td><td></td><td></td><td></td><td style='text-align:right;'>".number_format($dan[$key], 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td></tr>";
}

// ukončení table v mailu
$objednavka_mail_nahled .="<tr style='background-color:#A8101F;color:white;'><td style='padding-left:10px;'><strong>Cena celkem včetně DPH:</strong></td><td></td><td></td><td></td><td style='text-align:right;font-weight:bold;'>".number_format($celkova_cena+$doprava_cena+$platba_info['cena'], 2, ',', ' ').PREFIX_CENY.JEDNOTKA_CENY.SUFIX_CENY."</td></tr>";
$objednavka_mail_nahled .= "</table>";

.
.
.
$body = " <html>

<head>
</head>
<body>
<img src=\"cid:logo\" ><br>
<div style='width:600px;'>
<p><span style='padding-left:10px;'>Dobrý den,</span><br>
zasíláme Vám informace o Vaší objednávce, kterou jste zadal/a dne ".get_my_time(time(), 1)." na internetovém obchodě <a href='$http/' style='text-decoration:none;'><span style='color:#333333; font-weight:bold;'>www.spodni-pradlo-<span style='color:#C01122; font-weight:bold;'>Bella</span><span style='color:#333333; font-weight:bold;'>.cz</span></a>.
<br><br>
Stav: <strong> zpracovává se </strong>
<br>

$objednavka_mail_nahled

<br>
Objednávka bude zaslána na :
<br> ".$jmeno." ".$prijmeni."
<br> ".$ulice."
<br> ".$mesto."
<br> ".$psc."
$platba_na_ucet
<br><br> V případě jakýchkoli nesrovnalostí nás kontaktuje na naší infolince.
<br><br><br>
S pozdravem a přáním hezkého dne <a href='$http/' style='text-decoration:none;'><span style='color:#333333; font-weight:bold;'>www.spodni-pradlo-<span style='color:#C01122; font-weight:bold;'>Bella</span><span style='color:#333333; font-weight:bold;'>.cz</span></a> - internetový obchod se spodním prádlem
</p>
</div>
</body>
</html>
";
// odeslání emailu



$mail = new PHPMailer();
$mail->IsMail();
$mail->IsHTML(true);
$mail->CharSet = "UTF-8";
$mail->From = "obchod@spodni-pradlo-bella.cz";
$mail->FromName = "www.spodni-pradlo-bella.cz - eshop se spodním prádlem";
$mail->WordWrap = 50;
// $mail->AddStringAttachment ($data, "zakaznik.txt", "base64", "text/plain");
$mail->Subject = "Objednávka";
// $mail->Body = $body; //
$mail->AddEmbeddedImage(
'img/mail_logo.jpg', // lokalni soubor
'logo', // ID shodné s HTML
'logo.gif', // zobrazený název souboru
'base64',
'image/jpeg'
); // MIME typ
$mail->Body = $body;
$mail->AltBody = "Stav objednávky";
$mail->AddAddress($prijemce);
Alphard
Profil
Nemáte ještě html zdroják toho rozbitého mailu?

Já PHPMailer nepoužívám, ale nikde jsem na podobný problém nenarazil.
Obecně byste měl všechna data (jako $jmeno, což předpokládám pochází od klienta) escapovat.
Frozen
Profil
S proměnými pracuji výše než je uveden kód, uvedl jsem jen část, která se stará o zpracování dat do mailu

jinak výstup je zde
<div style="width: 600px;"> 
<p><span style="padding-left: 10px;">Dobrý den,</span>
<br> zasíláme Vám informace o Vaší objednávce, kterou jste zadal/a dne 31.01.2011 na internetovém obchodě <a style="text-decoration: none;" href="/redir?hashId=389548396&amp;to=http%3a%2f%2fwww%2espodni%2dpradlo%2dbella%2ecz%2f" target="_blank">
<span style="color: rgb(51, 51, 51); font-weight: bold;">www.spodni-pradlo-<span style="color: rgb(192, 17, 34); font-weight: bold;">Bella</span>
<span style="color: rgb(51, 51, 51); font-weight: bold;">.cz</span>
</span>
</a>. 
<br><br> Stav: <strong> zpracovává se </strong> <br> </p>

&lt; td style='text-align:center;'&gt;1

<table style="width: 600px; background-color: rgb(253, 236, 238); border-spacing: 0px;"><tbody>
<tr><th style="background-color: rgb(168, 16, 31); color: white;">zboží</th><th style="background-color: rgb(168, 16, 31); color: white;">vlastnosti</th><th style="background-color: rgb(168, 16, 31); color: white;">množství</th><th style="background-color: rgb(168, 16, 31); color: white;">cena za kus</th><th style="background-color: rgb(168, 16, 31); color: white;">celková cena</th></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Černá</td><td style="text-align: center;">2</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">260,00,-Kč</td></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Fialová</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Lill a</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Modrá</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Růžovofialová</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr><tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Smetanová</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr><tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Tmavěfialová</td><td style="text-align: right;">1 30,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr>
<tr><td style="padding-left: 10px;">Tanga Bellissima 030</td><td style="text-align: center;">S-M Tyrkysová</td><td style="text-align: center;">1</td><td style="text-align: right;">130,00,-Kč</td><td style="text-align: right;">130,00,-Kč</td></tr>
<tr style="background-color: rgb(255, 255, 210);"><td style="padding-left: 10px;">Doprava (Česká pošta): </td><td></td><td></td><td></td><td style="text-align: right;">70,00,-Kč</td></tr>
<tr style="background-color: rgb(255, 255, 210);"><td style="padding-left: 10px;">Platba (dobírka): </td><td></td><td></td><td></td><td style="text-align: right;">50,00,-Kč</td></tr><tr style="background-color: rgb(233, 233, 233);"><td style="padding-left: 10px;">Cena celkem bez DPH: </td><td></td><td></td><td></td><td style="text-align: right;">975,00,-Kč</td></tr>
<tr style="background-color: rgb(233, 233, 233);"><td style="padding-left: 10px;">DPH(20%):</td><td></td><td></td><td></td><td style="text-align: right;">195,00,-Kč</td></tr><tr style="background-color: rgb(168, 16, 31); color: white;"><td style="padding-left: 10px;"><strong>Cena celkem včetně DPH:</strong></td><td></td><td></td><td></td><td style="text-align: right; font-weight: bold;">1 290,00,-Kč</td></tr></tbody></table> 

.....

Koukám, že tam mam špatné ukončení <span>u (napřeskáčku), ale zřejmě to nebude ta chyba. Nevím občas se to stane a občas ne. Netuším čím to může být.
Alphard
Profil
Problém je evidentně v &lt; td style='text-align:center;'&gt;1
To jsou entity pro < a > před tabulkou. Jak to vzniká nevím. Je ta chyba zcela náhodná, nebo se pro stejná data projeví vždy stejně?
Frozen
Profil
právě že je to nahodilá chyba :'-(
Frozen
Profil
Tak další poznatek... vypadá to, že mi to dělá pouze atribut s vlasnostmi S-M Tmavěfialová - což absolutně nechápu...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: