2012-01-09 16 views
5

私の会社のサイトには、氏名、電話番号、コメント(および他のもの)が書かれた書式があります。コメント欄には最大5000文字まで入力できます。これは非常に冗長な顧客を許可するための大きな制限です。有効なフォームの内容は、php形式のメールをテキスト形式の電子メールとして営業部に送信します。PHP - フォームメールを挿入!長い文字列に改行します。

何らかの理由で、コメントが約1000文字を超える場合、感嘆符、改行、およびインデントが挿入されることがあります。これは電子メールのみに適用されます。フォームにエラーがあると、データがフォームに挿入され、エラーがマークされ、コメントに感嘆符+改行がまだありません。

この問題につながる約990文字の文字数制限があることを示唆する1つのフォーラム投稿が見つかりました。

原因を知っている人はいますか?誰もがこれに対してかなり簡単な修正を知っていますか?

関連する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

電子メールの行の文字数に制限があります:

は文字数のこの標準の場所という2つの制限があります。一行に各行は998文字以内でなければならず、CRLFを除いて78文字以内でなければならない(SHOULD)。 (RFC 2882)あなたがこれを達成するためにPHPの機能wordwrapを使用することができます

:いずれの場合で

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

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

を、これはあなたのスクリプトで送信されたメールの可読性を向上させるだけでなく、それらが標準に準拠することになります。

+1

私は驚いていますが、フォームメールはデフォルトで自動的にこれを行いません... –

関連する問題