2012-01-09 3 views
5

У меня есть форма на сайте моей компании, которая берет имя, номер телефона и комментарии (и еще пару вещей). В поле комментариев вы можете ввести до 5000 символов - большой предел, позволяющий очень много клиентов. Действительная форма имеет свое содержимое, отправленное с использованием почтовой формы php в виде текстового сообщения электронной почты в наш отдел продаж.PHP - Вставка формы формы! и разрыв строки в длинные строки

По какой-то причине, если комментарии длиннее 1000 символов, они будут иметь и восклицательный знак, разрыв строки, а иногда и вставленный отступ. Обратите внимание, что это относится только к электронной почте; если в форме есть ошибка, данные вставляются в форму, а ошибки отмечены, а комментарии еще не имеют восклицательных знаков + разрывов строк.

Обнаружено одно сообщение в форуме об этом, что указывает на ограничение персонажа около 990 символов, что приводит к этой проблеме.

Кто-нибудь знает причину? Кто-нибудь знает довольно легкое решение для этого?

Соответствующий код PHP:

$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

У вас есть PHP-скрипт, который отправляет нам письмо для проверки? –

ответ

7

Существует ограничение на количество символов в строке по электронной почте:

Есть два ограничения, это стандартные места по количеству символов в строке. Каждая строка символов ДОЛЖНА быть не более 998 символов, и ДОЛЖНА быть не более 78 символов, исключая CRLF. (RFC 2882)

Вы можете использовать функцию PHP wordwrap для достижения этой цели:

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

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

В любом случае, это улучшит читаемость письма, отправленное с вашим сценарием, а также делают их соответствующим стандартам ,

+1

Я удивлен, что форма электронной почты не делает это автоматически/по умолчанию ... –

Смежные вопросы