2010-12-06 32 views
7

Tôi đang tạo một CMS dựa trên email bằng PHP và tôi bắt buộc phải sử dụng Gmail làm dịch vụ email. Bây giờ, kịch bản cực kỳ đơn giản và vấn đề duy nhất tôi gặp phải là xử lý cú pháp email của Gmail.PHP: Thư của Gmail chứa HTML không hợp lệ và biệt ngữ ngẫu nhiên

Tôi đã chờ đợi một cái gì đó một chút dễ quản lý hơn, như thế này, khi nhận được một email:

<u>asfasfasf</u> <u style="font-style: italic;">asdfaf</u> <ustyle="font-style: italic; font-weight: bold;">asfsaf</u> asfasf <a href="http://asfasfafs">asfasf</a> 
<br /> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sodales mauris quis nisl pellentesque eleifend. Sed convallis turpis quis turpis malesuada feugiat. Fusce sed metus non orci convallis congue. Integer egestas vulputate ipsum, sed fringilla velit elementum scelerisque. Pellentesque convallis metus sit amet enim faucibus adipiscing. 

Nhưng tôi nhận được này để thay thế (vịt và cover):

<u>asfasfasf </u><u style=3D"font-style: italic; ">asdfaf =A0</u><u style= 
=3D"font-style: italic; font-weight: bold; ">asfsaf </u>asfasf <a href=3D"h= 
ttp://asfasfafs">asfasf</a><div><br></div><div><meta http-equiv=3D"content-= 
type" content=3D"text/html; charset=3Dutf-8"><span class=3D"Apple-style-spa= 
n" style=3D"font-family: Arial, Helvetica, sans; font-size: 11px; "><p styl= 
e=3D"text-align: justify; font-size: 11px; line-height: 14px; margin-top: 0= 
px; margin-right: 0px; margin-bottom: 14px; margin-left: 0px; padding-top: = 
0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sodales m= 
auris quis nisl pellentesque eleifend. Sed convallis turpis quis turpis mal= 
esuada feugiat. Fusce sed metus non orci convallis congue. Integer egestas = 
vulputate ipsum, sed fringilla velit elementum scelerisque. Pellentesque co= 
nvallis metus sit amet enim faucibus adipiscing.</p> 
</span> 

Tôi đã thử Tidy nhưng không thể xử lý các liên kết của Gmail và 'ngắt dòng'. Các ngắt chỉ là = ở cuối, mà hoàn toàn mess up Tidy, và các liên kết là đôi khi (một cách ngẫu nhiên, tôi nghĩ) như thế này: <a href=3D"http://asfasfafs">asfasf</a>, với những =\n ngay ở giữa!

Làm cách nào tôi đào tạo gọn gàng để xử lý loại HTML báng bổ này và xuất một thứ gì đó mà tôi có thể đưa trực tiếp vào một trang web <div> bên trong trang web?

Cảm ơn!

Trả lời

10

Hình như mã hóa quoted-printable. Bạn nên kiểm tra dòng tiêu đề "Content-Transfer-Encoding:" của thư để xem có mã hóa nào hiện tại (chẳng hạn như base-64 hoặc có thể in được) và xóa mã hóa trước khi cố gắng phân tích cú pháp nội dung.

+0

Cảm ơn bạn! PHP * có * có một hàm cho hàm này ('quoted_printable_decode()'). Tôi đang chơi với nó ngay bây giờ, và tôi nhận được HTML hợp lệ! – Blender

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