2012-01-09 10 views
5

Tôi có một biểu mẫu trên trang web của công ty tôi có tên, số điện thoại và nhận xét (và một vài thứ khác). Hộp nhận xét cho phép bạn nhập tối đa 5000 ký tự - giới hạn lớn cho phép khách hàng rất tiết kiệm. Một hình thức hợp lệ có nội dung của nó được gửi bằng cách sử dụng thư mẫu php dưới dạng một văn bản đơn giản e-mail cho bộ phận bán hàng của chúng tôi.PHP - Chèn biểu mẫu thư! và ngắt dòng thành các chuỗi dài

Vì lý do nào đó, nếu Nhận xét dài hơn 1000 ký tự, chúng sẽ có dấu chấm than, ngắt dòng và đôi khi chèn thụt lề. Lưu ý điều này chỉ áp dụng cho e-mail; nếu biểu mẫu có lỗi trong đó, dữ liệu được chèn vào biểu mẫu và lỗi được đánh dấu và các nhận xét không có dấu chấm than + dấu ngắt dòng.

Tôi đã tìm thấy một bài đăng trên diễn đàn về đề xuất rằng có giới hạn ký tự khoảng 990 ký tự dẫn đến sự cố này.

Có ai biết nguyên nhân không? Có ai biết một sửa chữa khá dễ dàng cho việc này?

mã PHP liên quan:

$to = $email; 

$subject = "Website Order Received: $offer"; 

$contents = " 
Order Form Received -\n 
Name: $name\n 
Company: $company\n 
Email: $email\n 
Phone: $phone $phoneExt\n 
Order Contents:\n" . 
($offer == 'web-demo' ? "- I want a live software demonstration.\n" : "") . 
($offer == 'pricing' ? "- I'd like pricing information.\n" : "") . 
($offer == 'holiday-pricing' ? "- I'd like to sign up before December 31st for the special holiday offer!\n" : "") . 
($offer == 'bid-help' ? "- Please give me marketing materials and other assistance for winning bids.\n" : "") . 
($offer == 'demo-cd' ? "- Send me the full-version demonstration CD.\n" : ""); 
if (!empty ($comments)) { 
    $comments = str_replace(" 
", "\n", $comments); // Preserves line breaks in the comments. 
    $contents = $contents."\nComments: $comments\n\n"; 
} 
$contents = str_replace("\n", "\r\n", $contents); 

mail($to, $subject, $contents); 
+0

Bạn có tập lệnh PHP gửi thư để chúng tôi kiểm tra không? –

Trả lời

7

Có một giới hạn số ký tự trong một dòng của một email:

Có hai hạn chế rằng đây nơi tiêu chuẩn về số lượng ký tự trên một đường thẳng. Mỗi dòng ký tự PHẢI không quá 998 ký tự và KHÔNG được nhiều hơn 78 ký tự, ngoại trừ CRLF. (RFC 2882)

Bạn có thể sử dụng chức năng PHP wordwrap để đạt được điều này:

$contents = wordwrap($contents); 
$contents = str_replace("\n", "\r\n", $contents); 

$contents = str_replace("\n", "\r\n", $contents); 

Trong mọi trường hợp, điều này sẽ cải thiện khả năng đọc các email gửi đi với kịch bản của bạn, cũng như làm cho chúng tiêu chuẩn phù hợp .

+1

Tôi thấy thư biểu mẫu ngạc nhiên không tự động thực hiện việc này/theo mặc định ... –