PHP - Форма почты вставляет ! и перевод строки в длинные строки

На сайте моей компании есть форма, которая принимает имя, номер телефона и комментарии (и пару других вещей). В поле для комментариев можно ввести до 5000 символов - большой лимит, чтобы позволить очень многословным клиентам. При правильном заполнении формы ее содержимое отправляется с помощью php form mail в виде обычного текстового письма в наш отдел продаж.

По какой-то причине, если длина комментариев превышает примерно 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);
6
задан Charles Stewart 26 February 2013 в 14:03
поделиться