2011-10-27 11 views
15

Mam problem z formatowaniem tabeli w wiadomości e-mail w formacie HTML. Wydaje się, że zawsze jest jedna komórka, która nie ma koloru tła lub dziwnych białych przestrzeni.Punkt wykrzyknika w wiadomości e-mail w formacie HTML

Oto kod (w php) -

$subject.="<br/><br/><table style=\"width:585px;\" ><tr><td style=\"padding:10px;background-color:#113797;color:white;\">New & Used Vehicles</td><td style=\"padding:10px;background-color:#113797;color:white;\">Term in Months</td><td style=\"padding:10px;background-color:#113797;color:white;\">APR* As Low As</td><td style=\"padding:10px;background-color:#113797;color:white;\">Monthly Payment Per $1000 Borrowed</td></tr>";  
    $result = mysql_query("SELECT * FROM rates WHERE ID>='32' AND ID <='39'"); 
     while($row = mysql_fetch_array($result)) 
    { 
        $subject.= "<tr><td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;color:black;\">" . $row['name'] . "</td>"; 
        $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['term'] . "</td>"; 
        $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['apr'] . "</td>"; 
        $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['per_1000'] . "</td></tr>"; 
    } 

$subject.= "</table>"; 

Więc próbowałem zarówno tło css i html i zarówno stworzyć coś, co wygląda źle. Próbowałem także Doctypes.

Tak wygląda mój kod pocztowy.

mail("[email protected]", "$title2", "$subject" , "Content-type: text/html;\r\nFrom: [email protected]"); 

Oto, jak to wygląda. Widzisz nieuczciwą przestrzeń?

Table that is messed up!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>Check out the low rates.<table style="width:585px;" ><tr><td style="padding:10px;background-color:#113797;color:white;">New &amp; Used Vehicles</td><td style="padding:10px;background-color:#113797;color:white;">Term in Months</td><td style="padding:10px;background-color:#113797;color:white;">APR* As Low As</td><td style="padding:10px;background-color:#113797;color:white;">Monthly Payment Per $1000 Borrowed</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 and NEWER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">3.24%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$17.28</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 and NEWER Vehicle! 
    Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">4.29%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$15.69</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 and OLDER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.49%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$18.20</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 and OLDER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$16.46</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2011 &amp; 2010 REFINANCES</td><td bgcolor=! 
"#e5f1ff" style="padding:10px;height:100%;">Up to 63 Months</t! 
d><td bg 
color="#e5f1ff" style="padding:10px;height:100%;">4.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$18.08</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2011 &amp; 2010 REFINANCES</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.49%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$16.34</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 - 2009 REFINANCES</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 60 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$19.33</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 &amp; older Vehicle REFINANCE</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 60 Months</td><td bgcolor="#e5f1ff" style="padding:10px! 
;height:100%;">6.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$19.80</td></tr></table></body></html> 
+1

Który klient pocztowy go wyświetla? W przeciwieństwie do przeglądarek, klienci e-mail nie wydają się regularnie aktualizować silników renderowania i mogą wymyślać różne dziwne dziwactwa - robisz właściwie wszystko, ale znalazłem najbardziej niezawodne formatowanie HTML w e-mailach HTML 4 bez CSS lub bez niego. – CD001

+0

Właśnie zauważyłem z jakiegoś dziwnego powodu, że w moim stole jest huk. Ciekawe, dlaczego do cholery tam jest. –

+0

Podobnie jak w eksperymencie spróbuj obniżyć atrybuty BGCOLOR - fakt, że znaczniki '
' są zamkniętymi wskazówkami, że używasz XHTML, a jeśli tak jest, to powinien być formatowany XML, a zatem atrybuty powinny być pisane małymi literami . Prawdopodobnie nie zrobi to żadnej różnicy, ale klienci poczty e-mail są dziwaczni :) – CD001

Odpowiedz

26

Nienawidzę odpowiadać na moje własne pytanie, ale znalazłem rozwiązanie problemu, i mam nadzieję, że ktoś może użyć tego rozwiązania, aby pozbyć się bóle głowy, które to powoduje.

Problem jest spowodowany przez użycie funkcji mail(). Kiedy próbuję wysłać e-mail, mam długi ciąg kodu html. W FAKTZE, ZA DŁUGI! Kiedy przejdę obok 78 znaków, BANG! pokazuje, a następnie walczy z moim html lub css. RFC 2822

Rozdzielczość polega na zamianie na 64-bitowe kodowanie danych lub dodanie \ r \ n na długich liniach kodu html. W każdym przypadku rozwiązuje problem.

Dzięki za pomoc wszystkim!

+1

Miałem ten sam problem i udało mi się go rozwiązać za pomocą \ n na końcu długich linii. Przeczytałem tutaj http://drupal.org/node/31524, że e-maile wymagają przerwy w linii po 998 znakach, aby uniknąć problemu. Dziękujemy za przesłanie odpowiedzi! – Dan

+0

@Andrew Threadgill - pojawia się ten sam problem, w jaki sposób zmieniłeś kod HTML na kodowanie base-64? Jakąkolwiek funkcję? – user2341103

+0

Nie musisz, jeśli chcesz używać \ n. –

3

Wydaje się, że nie jest to powrót na przeszkadzające komórki Więc spróbuj dodać wysokość: 100% do nich, więc są one całkowicie wypełnione. Można rozwiązać ten problem poprzez regulację ten kod

<td style=\"padding:10px;background-color:#113797;color:white;\"> 

Aby

<td style=\"padding:10px;background-color:#113797;color:white;height:100%;\"> 

To powinno rozwiązać problem.

+1

Komórki tabeli są zawsze pełną wysokością wiersza i całą szerokością kolumny nadrzędnej. –

2

Usuń wszystkie style CSS, wiele silników renderowania wiadomości e-mail zawiedzie. Użyj prostego starego wzoru stołu.

Zastosowanie <font color="black">blah</font> zamiast stylu color użyć <table cellpadding="10"> zamiast stylu padding użyć bgcolor zamiast stylu background-color.

Ustaw bgcolor na całą TABELĘ, a nie na TD.

+0

Tak, to działa. Nie wiedziałem, że to jest taki kłopot, aby mieć CSS w e-mailu HTML. Większość miejsc, do których się odwoływałem, jest zazwyczaj w porządku. –

2

Oto przykład jak stworzyć Base64 zakodowane Email w:

<?php 

$html = "<p>The <b>quick</b> <em>brown</em> <u>fox</u> jumped right over the lazy dog.</p><hr />"; 

$to = "[email protected]"; 
$cc = "[email protected]"; 
$bcc = "[email protected]"; 
$from = "[email protected]"; 

$subject = "This is a MIME encoded email"; 
$boundary = str_replace(" ", "", date('l jS \of F Y h i s A')); 
$newline = "\r\n"; 

$headers = "From: $from$newline". 
      "Cc: $cc$newline". 
      "Bcc: $bcc$newline". 
      "MIME-Version: 1.0$newline". 
      "Content-Type: multipart/alternative;". 
      "boundary = \"$boundary\"$newline$newline". 
      "--$boundary$newline". 
      "Content-Type: text/html; charset=ISO-8859-1$newline". 
      "Content-Transfer-Encoding: base64$newline$newline"; 

$headers .= rtrim(chunk_split(base64_encode($html))); 

mail($to,$subject,"",$headers); 

?> 

znalazłem ten kod w poniższej stronie:

https://ctrlq.org/code/19840-base64-encoded-email

Konfigurowanie wiadomości e-mail, aby być Based64 Zakodowany usunie losowe "!" dodawane do wiadomości e-mail.

+0

Podczas gdy link do mojej oferty rozwiązanie tego pytania nie jest dobrze napisaną odpowiedzią. Powinieneś dodać najbardziej odpowiednią część z linku do swojej odpowiedzi. –

+0

OK, dzięki, zmienię moją odpowiedź – colinam1992

+0

Świetnie, jeśli chcesz uzyskać pomoc, przeczytaj: [Jak napisać dobrą odpowiedź?] (Http://stackoverflow.com/help/how-to-answer) –

Powiązane problemy