2012-10-11 69 views
6

Tôi đang sử dụng phpmailer để gửi email trong trang web của mình. Mã của tôi hoạt động tốt nhưng đôi khi trong nội dung thư email chứa dấu chấm than ở những vị trí ngẫu nhiên. Mã của tôi như sau:dấu chấm than xuất hiện trong nội dung thư email bằng cách sử dụng phpmailer

$mail->SetFrom(FROM_EMAIL,FROM_NAME); //emailid of sender(admin)     
$mail->Subject = 'Subject here.'; //subject of email 
$mail->AddAddress(Address here); //emailid of user(recipient) 
$content = 'some html code here'; 

$mail->MsgHTML($content); //this is body of email 
$mail->Send(); 

Điều này làm việc tốt. Nhưng không thể tìm thấy lý do tại sao dấu chấm than đến đôi khi. Cảm ơn trước ...

+0

Dấu chấm than '!' Hoặc dấu chấm hỏi '?' ?? Thông thường, nếu khách hàng xem thư HTML diễn giải sai bộ ký tự (vì thư của bạn được báo cáo sai), các ký tự không hợp lệ sẽ xuất hiện dưới dạng '?'. –

+0

Có thể cần '$ mail-> CharSet = 'UTF-8'; ' –

Trả lời

8

Tôi nghĩ rằng đó là vì thư email không được có nhiều hơn 998 ký tự trên một dòng.

Cố gắng thêm,

$mail->WordWrap = 50; 
+0

vẫn không nhận được lỗi tương tự – CodeWarrior

+1

kiểm tra điều này, http://www.tinyfrogsoftware.com/the-story-of-the-rogue-exclamation- mark-or-how-i-lost-4-hours-of-my-life/ Hy vọng điều đó sẽ hữu ích. –

+3

hoặc thử thêm '$ content = wordwrap ($ content, 50);' sau '$ content = 'một số mã html ở đây';' –

3

Tôi biết điều này là muộn nhưng có một giải pháp thay thế mà làm việc cho tôi:

Sử dụng dòng này để mã hóa toàn bộ thông điệp bằng base64 của bạn:

$message = chunk_split(base64_encode($message)); 

Sau đó, hãy thêm tiêu đề này vào tiêu đề của bạn:

$headers .= "Content-Transfer-Encoding: base64\r\n\r\n"; 

Điều đó sẽ báo cho ứng dụng thư rằng thư của bạn được mã hóa base64.

0

Tôi có vấn đề này cũng có thể, sau khi tìm kiếm lâu tôi đã phát hiện ra rằng bạn nên WordWrap HTML của bạn

$emailContent = '<p>some large html</p>'; 
$mail->msgHTML(wordwrap($emailContent, 50)); 
1

nếu bạn đang sử dụng PHPMailer sau đó chỉ có một dòng mã sẽ giúp:

$mail = new PHPMailer(); 
$mail->Encoding = 'base64'; 

điều này sẽ làm Content-Transfer-Encoding: base64 và chunk_split (base64_encode ($ message)) trong nội bộ.

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