2011-10-27 6 views
15

Sto avendo un momento difficile la formattazione di una tabella in una e-mail HTML. Sembra che ci sia sempre una cella che non ha il colore di sfondo o strani spazi bianchi.Punto esclamativo in HTML Email

Ecco il codice (in 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>"; 

Così ho cercato sia di sfondo CSS e HTML ed entrambi creare qualcosa che sembra male. Ho anche provato Doctypes.

Questo è ciò che il mio codice di posta assomiglia.

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

Ecco come si presenta. Vedi lo spazio canaglia?

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

Quale client di posta elettronica lo stai visualizzando? A differenza dei browser, i client di posta elettronica non sembrano avere i motori di rendering aggiornati regolarmente e possono lanciare tutti i tipi di strane stranezze: comunque stai facendo le cose giuste ma ho trovato che la più affidabile formattazione per HTML nelle e-mail è HTML 4 con CSS no o al massimo inline. – CD001

+0

Ho appena notato per qualche strana ragione che c'è un botto nel mio tavolo. Mi chiedo perché diavolo c'è. –

+0

Proprio come un esperimento prova ad abbassare il livello degli attributi BGCOLOR - il fatto che i tag '
' siano chiusi suggerisce che stai usando XHTML e, se questo è il caso, dovrebbe essere formattato in XML e quindi gli attributi dovrebbero essere in minuscolo . Probabilmente non farà alcuna differenza, ma i client di posta elettronica sono eccentrici :) – CD001

risposta

26

Odio rispondere alla mia domanda, ma ho trovato una soluzione al problema, e spero che qualcuno possa usare questa soluzione per sbarazzarsi dei mal di testa di questa causa.

Il problema è causato da un uso della funzione mail(). Quando provo a inviare l'email, ho una lunga stringa di codice html. IN REALTÀ, TROPPO LUNGA! Quando passo oltre 78 caratteri a BANG! mostra e poi jacks con il mio html o css. RFC 2822

La risoluzione è di cambiarlo in base-64 codificare i dati o aggiungere \ r \ n sulle mie lunghe linee di codice html. In entrambi i casi risolve il problema.

Grazie per l'aiuto tutti!

+1

Ho avuto lo stesso problema ed è stato in grado di risolverlo solo con \ n alla fine delle linee lunghe. Ho letto qui http://drupal.org/node/31524 che le email hanno bisogno di un'interruzione di riga dopo 998 caratteri per evitare il problema. Grazie per aver postato con la tua risposta! – Dan

+0

@Andrew Threadgill - sono in esecuzione nello stesso numero, come hai cambiato il codice HTML in codifica base-64? Qualsiasi funzione? – user2341103

+0

Non è necessario se si desidera utilizzare \ n. –

3

sembra che non ci sia un ritorno sulle cellule incriminate Quindi provate ad aggiungere altezza: 100% di loro in modo che siano completamente riempiti. Si potrebbe risolvere questo problema modificando il codice

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

Per

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

Questo dovrebbe risolvere il problema.

+1

Le celle di tabella sono sempre a tutta altezza della riga in cui si trovano e l'intera larghezza della colonna padre. –

2

Rimuovere tutta stile CSS, un sacco di motori di rendering e-mail non riescono con esso. Usa il semplice design del tavolo vecchio.

Uso <font color="black">blah</font> invece di stile color, utilizzare <table cellpadding="10"> invece di stile padding, utilizzare bgcolor invece di stile background-color.

Set bgcolor a tutto il tavolo, non TDs.

+0

Sì, questo funziona. Non sapevo che fosse una seccatura avere CSS in una email HTML. La maggior parte dei posti a cui ho fatto riferimento ha detto che in linea di solito è ok. –

2

Ecco un esempio di come creare un e-mail Base64 codificati in:

<?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); 

?> 

Ho trovato questo codice nel seguente sito:

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

Configurare la posta elettronica per essere Based64 Encoded rimuoverà il casuale '!' essere aggiunto alle e-mail.

+0

Mentre il link la mia offerta una soluzione alla domanda questa non è una risposta ben scritta. Dovresti aggiungere la parte più pertinente dal link alla tua risposta. –

+0

Ok grazie, correggerò la mia risposta – colinam1992

+0

Ottimo, se vuoi qualche aiuto puoi leggere attraverso questo: [Come posso scrivere una buona risposta?] (Http://stackoverflow.com/help/how-to-answer) –