-1

関数を使用して詳細を電子メールで送信するフォームがWebページにありPHP mail()ます。フォームはかなり長く、メールのHTMLフォーマットも含めています。
すべてのフォーム情報を含めないとメールは正常に送信されますが、フォーム全体を含めようとするとメールが送信されません。情報が多すぎると動作しなくなるようです。情報の一部を取り出すとすぐに再び機能し、情報のどの部分を削除してもかまいません。
同じ問題のある2つの異なるWebサイトホストでフォームを試しました。メールの内容は約300行しかないので、サイズが問題かどうかはわかりません。

何が問題を引き起こしているのか誰か知っていますか?

これがあなたの参照のための私のコードです

上記で「動作を停止する」と言うときは、mail()関数がfalseを返し、電子メールを送信しないことを意味します。実際のフォームは正常に機能します。

4

2 に答える 2

1

PHPスクリプト内でその量のHTMLに到達した場合、$ body変数にすべての行を配置するのではなく、変数でそれをキャッチすると便利です。

ob_start();
?>
<html>
   Your HTML.
</html>
<?
$body = ob_get_clean();

このようにして、メール機能を台無しにするメッセージに何か問題があるかどうかを簡単に確認できます。

于 2012-09-28T11:51:55.343 に答える
1

これがphpメール関数の説明です。このドキュメントとこのドキュメント「PHPメールの文字数制限とは」では、本文の各行が70文字を超えてはならないことを指定しています。

このスタックオーバーフロー、PHPでの文字列の最大長はどれくらいか、および他のソースは、PHPには、文字列が十分に下回っているように見える合計メモリ制限以外の特定の制限がないことを示しています。

また、障害が発生する可能性のあるいくつかの異なる場所があり、障害に対して表示される動作を指定しません。

まず、mail()の戻り値をチェックして、PHPがメッセージをメールエージェントであるMTAに渡すことができたかどうかを判断します。次に、メールエージェントに問題が発生した場合に、問題を説明する何らかの返信を送信できるように、適切な住所と差出人住所を指定してください。

上記のUndriumによって提供された答えの詳細。彼の回答に基づいた追加資料へのリンクをいくつか示します。

これがob_get_clean()のドキュメントです。

これは、 HTMLメールの送信でob_get_clear()を使用する例です。

于 2012-09-28T12:08:31.567 に答える