2011-10-27 89 views
15

Tôi gặp khó khăn khi định dạng bảng trong email HTML. Dường như luôn có một ô không có màu nền hoặc khoảng trắng lạ.Dấu chấm than trong HTML Email

Đây là mã (trong 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>"; 

Vì vậy, tôi đã cố gắng cả hai nền css và html và cả hai tạo ra cái gì đó trông xấu. Tôi cũng đã thử Doctypes.

Đây là mã thư của tôi.

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

Dưới đây là ý nghĩa của nó. Xem không gian lừa đảo?

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

Ứng dụng email khách nào bạn đang xem? Không giống như các trình duyệt email của khách hàng dường như không có các công cụ dựng hình được cập nhật thường xuyên và chúng có thể ném tất cả các loại quirks lạ - bạn đang làm khá nhiều công cụ nhưng tôi đã tìm thấy định dạng đáng tin cậy nhất cho HTML trong email HTML 4 không có hoặc ở hầu hết CSS nội tuyến. – CD001

+0

Tôi chỉ nhận thấy một số lý do kỳ lạ có một tiếng nổ trong bảng của tôi. Tự hỏi tại sao cái quái vật đó lại ở đó. –

+0

Cũng giống như một thử nghiệm thử các thuộc tính BGCOLOR thấp hơn - thực tế là các thẻ '
' là những gợi ý đóng mà bạn đang sử dụng XHTML và, nếu đúng như vậy, nó phải được định dạng XML và do đó các thuộc tính phải thấp hơn . Có lẽ sẽ không tạo ra bất kỳ sự khác biệt nào nhưng các ứng dụng email đều rất kỳ quặc :) – CD001

Trả lời

26

Tôi ghét trả lời câu hỏi của riêng mình nhưng tôi đã tìm được giải pháp cho vấn đề và hy vọng ai đó có thể sử dụng giải pháp này để loại bỏ các nguyên nhân gây ra chứng đau đầu này.

Sự cố này được gây ra do sử dụng hàm mail(). Khi tôi cố gắng gửi email, tôi có một chuỗi mã html dài. TÌM THẤY, QUÁ DÀI! Khi tôi vượt qua 78 ký tự, hãy BANG! hiển thị và sau đó kích hoạt bằng html hoặc css của tôi. RFC 2822

Độ phân giải là thay đổi nó thành base-64 mã hóa dữ liệu hoặc thêm \ r \ n trên các dòng mã html dài của tôi. Dù bằng cách nào cũng giải quyết được vấn đề.

Cảm ơn sự giúp đỡ của mọi người!

+1

Tôi gặp sự cố tương tự và có thể giải quyết nó chỉ bằng \ n ở cuối dòng dài. Tôi đọc ở đây http://drupal.org/node/31524 rằng các email cần ngắt dòng sau 998 ký tự để tránh sự cố. Cảm ơn bạn đã đăng lại với câu trả lời của bạn! – Dan

+0

@Andrew Threadgill - đang chạy vào cùng một vấn đề, làm cách nào bạn thay đổi mã HTML thành mã hóa base-64? Bất kỳ chức năng nào? – user2341103

+0

Bạn không cần phải sử dụng \ n. –

3

Có vẻ không có một lợi nhuận trên các tế bào vi phạm Vì vậy, hãy thử thêm height: 100% cho họ để họ được làm đầy hoàn toàn. Bạn có thể khắc phục điều này bằng cách điều chỉnh mã này

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

Để

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

này nên giải quyết vấn đề của bạn.

+1

Các ô bảng luôn có chiều cao đầy đủ của hàng chúng và chiều rộng đầy đủ của cột mẹ. –

2

Xóa tất cả kiểu dáng CSS, nhiều công cụ hiển thị email không thành công. Sử dụng thiết kế bảng cũ đơn giản.

Sử dụng <font color="black">blah</font> thay vì phong cách color, sử dụng <table cellpadding="10"> thay vì phong cách padding, sử dụng bgcolor thay vì phong cách background-color.

Đặt bgcolor thành toàn bộ TABLE chứ không phải TD.

+0

Có điều này không hoạt động. Tôi không biết nó là một rắc rối như vậy để có CSS ​​trong một email HTML. Hầu hết các nơi tôi đã tham chiếu nói nội tuyến thường là ok. –

2

Đây là một ví dụ về cách tạo Email Base64 Encoded trong:

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

?> 

tôi tìm thấy mã này trong các trang web sau đây:

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

Thiết lập email của bạn sẽ được Based64 Được mã hóa sẽ loại bỏ ngẫu nhiên '!' đang được thêm vào email.

+0

Khi liên kết của tôi cung cấp một giải pháp cho câu hỏi này không phải là một câu trả lời tốt bằng văn bản. Bạn nên thêm phần có liên quan nhất từ ​​liên kết đến câu trả lời của bạn. –

+0

Ok cảm ơn, tôi sẽ sửa đổi câu trả lời của tôi – colinam1992

+0

Tuyệt vời, nếu bạn muốn bất kỳ trợ giúp nào bạn có thể đọc qua điều này: [Làm cách nào để viết câu trả lời hay?] (Http://stackoverflow.com/help/how-to-answer) –

Các vấn đề liên quan