6

会社のサイトに、名前、電話番号、コメント(およびその他のいくつか)を記載したフォームがあります。コメントボックスでは、最大5000文字を入力できます。これは、非常に冗長な顧客を許可するための大きな制限です。有効なフォームの内容は、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);
4

1 に答える 1

10

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

この標準では、1行の文字数に2つの制限があります。文字の各行は998文字以下である必要があり、CRLFを除いて78文字以下である必要があります。(RFC 2882)

PHP関数wordwrapを使用して、これを実現できます。

$contents = wordwrap($contents);

いずれにせよ、これにより、スクリプトとともに送信される電子メールの読みやすさが向上し、標準に準拠するようになります。

于 2012-01-09T21:26:32.090 に答える