2011-10-27 33 views
15

我很難在HTML電子郵件中格式化表格。似乎總是有一個單元沒有背景顏色或奇怪的空白。HTML電子郵件中的感嘆號

下面是代碼(在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>"; 

所以我都試過CSS背景和HTML兩者創造的東西,很糟糕。我也嘗試過Doctypes。

這是我的郵件代碼的樣子。

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

這是它呈現出來的樣子。看到流氓空間?

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

您正在查看哪個電子郵件客戶端?與瀏覽器不同,電子郵件客戶端似乎沒有定期更新渲染引擎,他們可能會拋出各種奇怪的怪癖 - 儘管你做得非常正確,但我發現電子郵件中最可靠的HTML格式是帶有no或最多內聯CSS的HTML 4。 – CD001

+0

我剛剛注意到一些奇怪的原因,我的桌子上有一聲巨響。想知道爲什麼那裏有那麼多。 –

+0

就像一個實驗嘗試降低BGCOLOR的屬性 - 「
」標籤關閉的事實表明您正在使用XHTML,如果是這種情況,它應該是XML格式的,因此屬性應該是小寫的。大概不會有什麼區別,但電子郵件客戶端是古怪的:) – CD001

回答

26

我討厭回答我自己的問題,但我確實找到了解決方案,希望有人可以使用此解決方案來擺脫由此引起的頭痛。

該問題是由於使用mail()函數引起的。當我嘗試發送電子郵件時,我有一長串html代碼。 事實上,太長了!當我超過78個字符a BANG!出現,然後插入我的HTML或CSS。 RFC 2822

解決方法是將其更改爲base64編碼數據或在我的長長的html代碼中添加\ r \ n。無論哪種方式解決這個問題。

感謝大家的幫助!

+1

我有同樣的問題,並能夠在長行結束時用\ n來解決它。我在這裏閱讀http://drupal.org/node/31524電子郵件需要在998個字符後換行以避免該問題。感謝您的回覆! – Dan

+0

@Andrew Threadgill - 我遇到了同樣的問題,你是如何將HTML代碼更改爲base-64編碼的?任何函數? – user2341103

+0

如果您想要使用\ n,則不需要。 –

3

似乎沒有對違規細胞 所以嘗試加入高回報:100%給他們,讓他們充分填滿。 您可以通過調整該代碼

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

解決這個問題要

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

這應該解決您的問題。

+1

表格單元始終是它們所在行的全高,以及它們父列的整個寬度。 –

2

刪除所有CSS樣式,很多電子郵件渲染引擎都會失敗。使用普通的舊桌子設計。而不是風格color

使用<font color="black">blah</font>,使用<table cellpadding="10">而不是風格padding,使用bgcolor,而不是風格background-color

將bgcolor設置爲整個TABLE,而不是TD。

+0

是的,這是行不通的。我不知道在HTML電子郵件中使用CSS是一件麻煩事。我引用的大多數地方都表示內聯通常是可以的。 –

2

下面是如何創建一個base64編碼的電子郵件中的一個例子:

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

?> 

我發現這個代碼在以下網站:

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

設置你的電子郵件是Based64編碼將刪除隨機'!'被添加到電子郵件。

+0

雖然鏈接我的報價這個問題的解決方案並不是一個寫得很好的答案。您應該將鏈接中最相關的部分添加到答案中。 –

+0

好的,謝謝,我會修改我的回覆 – colinam1992

+0

太棒了,如果你想得到任何幫助,你可以通讀這個:[我如何寫出一個好的答案?](http://stackoverflow.com/help/how-to-answer) –