2012-07-03 28 views
5

đây là những gì tôi có:php mail() chức năng thay đổi nhân vật và loại bỏ vi phạm trở lại

$msg = "1'2 ’3"4 “5”6 [email protected]#11$12%13^14&15*16(17)18}19{20"21:22?23>24<25 "; 
mail("[email protected]","My subject",$msg); 

khi tôi nhận được email tôi nhận được điều này:

1&#039;2 ’3&quot;4 “5”6 [email protected]#11$12%13^14&amp;15*16(17)18}19{20&quot;21:22?23&gt;24&lt;25 

nên nó thay đổi ký tự để html Tôi đoán? bất kỳ ý tưởng? Tôi cần email nhận được để chứa chính xác những gì tôi đã lưu trữ trong $ msg.thank bạn

nó cũng đã xóa các dấu ngắt trả về mà tôi có. trong db trường có dấu ngắt dòng được lưu trữ như sau:

Hello $name 

welcome to $websitename 

thank you, management 

đây là ví dụ không đáng kể, nhưng bạn có thể thấy có 2 dòng trống. khi email được gửi ra những phá vỡ trở lại được bỏ qua và tất cả của nó phù hợp bất kỳ suy nghĩ hài lòng

+2

Bạn đã cố gắng thiết lập các kiểu nội dung và mã hóa trong các tiêu đề thư? – Andrew

+0

no Tôi không đặt bất kỳ mã hóa nào trên các tiêu đề. – cppit

+0

Câu trả lời của Sudhir phải làm việc cho bạn. Mã hóa là điều đầu tiên tôi nghĩ đến, vì những rắc rối mã hóa đã khiến tôi lo lắng trong một vài dự án trong tuần qua. Chúc may mắn! – Andrew

Trả lời

4

Hãy thử thêm tiêu đề, như:

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
mail($to, $subject, $message, $headers); 

Xem ở đây: PHP mail()

+0

bất kỳ ý tưởng nào về ngắt trả lại? – cppit

2

Bạn phải đóng gói thông điệp bên trong base64 định dạng mã hóa để ngăn nội dung mangling:

$msg = "1'2 ’3\"4 “5”6 [email protected]#11$12%13^14&15*16(17)18}19{20\"21:22?23>24<25"; 

$body = chunk_split(base64_encode($msg)); 

mail("[email protected]", "My subject", $body, "Content-Transfer-Encoding: base64"); 

Cách dòng mới được xử lý khác nhau giữa các ứng dụng thư khác nhau; ví dụ, Outlook được biết là bíp dòng mới nhưng cũng cung cấp một cách để khôi phục chúng.

Để kiểm soát hoàn toàn, bạn nên sử dụng email HTML thay thế, tùy chọn với chế độ văn bản dự phòng.

+0

bất kỳ ý tưởng nào về thời gian nghỉ giải lao? – cppit

+0

@fogsy Điều này tùy thuộc vào ứng dụng thư khách; Outlook được biết là bíp dòng mới (nhưng nó có một tùy chọn để khôi phục chúng). Nếu bạn muốn kiểm soát hoàn toàn, bạn nên gửi email HTML. –

+0

không liên quan gì đến ứng dụng email, tôi nhận được email trong gmail và các ngắt trả lại bị mất – cppit

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