0

Sp メールを送信しようとしていますが、標準のメールから HTML メールに切り替えるまで、コードは正常に機能しました。

ここでライブです:http: //kenthomes.net/Amelia-Cove

「このプランを共有する」をクリック。

私のコードは次のとおりです。

    $person = $_POST["name"];

    //Where will you be pulling emails from?
    $emailDB = "emailAddresses";
    $type = $_POST["type"];

    //Get Share URL that is misformatted.
    $waybefore = $_GET["share"];
    $before = str_replace("*", "?", $waybefore);
    $shareMe = str_replace("!", "=", $before);

    $id = $_SERVER['HTTP_REFERER']; 
    $id = $_SERVER['HTTP_REFERER']; 
    //Where do you want a copy of this email to go to? (or null)
    $copyDB = "";

    if($_GET["com"])
    {
        $prettyType = "Community";
    }
    else if($_GET["inv"])
    {
        $prettyType = "Move-In Ready Home";
    }
    else if($_GET["mod"])
    {
        $prettyType = "Model Home";
    }

    $_POST["date"] = date("Y-m-d");

    $Emails = new Controller($emailDB, null, null, true);

    $ed = $Emails->getData();

    //
    // The good stuff
    //

    $emailTo = $_POST["email"];
    $subject = "Kent Homes - " . $person . " would like to share a " . ucwords(strtolower($_GET['type'])) . " with you!";

    $out = '<html><body>';
    $out .= $person . " thought you would like this " . $prettyType . " by Kent Homes.  Click the link to view: http://kenthomes.net" . $shareMe . "</br></br>";
    $out .= "Additional Message from " . $person . "</br>";
    $out .= $_POST['msg'];
    $out .= '</body></html>';

    $headers = "From: " . $person "<noreply@kenthomes.com>\r\n";
    $headers .= "Reply-To: <noreply@kenthomes.com\r\n";
    $headers .= "X-Mailer: PHP/" . phpversion()."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    //
    // Send 'er off!
    //

    mail($emailTo, $subject, $out, $headers);

    if($toEmail) {
        mail($emailTo, $subject, $out, $headers);
    }

    echo "<p>This " . ucwords(strtolower($_GET['type'])) . " has been sent to " . $_POST["email"] . ".</p>";
    unset($_POST["id"]);

エラーが発生しています:

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

これは、HTMLメールの前に機能するコードがどのように見えるかです:

            $Captcha = new MCaptcha();
                if($_POST["submitit"])
                {
                    $answer = $Captcha->checkAnswer();
                    if($answer)
                    {
                        $person = $_POST["name"];
                        $emailTo = $_POST["email"];
                        $subject = "Kent Homes - " . $person . " would like to share a " . ucwords(strtolower($_GET['type'])) . " with you!";

                        //Where will you be pulling emails from?
                        $emailDB = "emailAddresses";
                        $type = $_POST["type"];

                        //Get Share URL that is misformatted.
                        $waybefore = $_GET["share"];
                        $before = str_replace("*", "?", $waybefore);
                        $shareMe = str_replace("!", "=", $before);

                        $id = $_SERVER['HTTP_REFERER']; 
                        $id = $_SERVER['HTTP_REFERER']; 
                        //Where do you want a copy of this email to go to? (or null)
                        $copyDB = "";

                        if($_GET["com"])
                        {
                            $prettyType = "Community";
                        }
                        else if($_GET["inv"])
                        {
                            $prettyType = "Move-In Ready Home";
                        }
                        else if($_GET["mod"])
                        {
                            $prettyType = "Model Home";
                        }

                        $out = $person . " thought you would like this " . $prettyType . " by Kent Homes.  Click the link to view: http://kenthomes.net" . $shareMe . " ";

                        $_POST["date"] = date("Y-m-d");

                        $Emails = new Controller($emailDB, null, null, true);

                        $ed = $Emails->getData();

                        mail($emailTo, $subject, $out, $headers);

                        if($toEmail) {
                            mail($emailTo, $subject, $out, $headers);
                        }

                        echo "<p>This " . ucwords(strtolower($_GET['type'])) . " has been sent to " . $_POST["email"] . ".</p>";
                        unset($_POST["id"]);
                    }
                }
4

2 に答える 2

0

500 の原因となるコードの問題は見当たりません。500 の原因となる見えない項目:

  1. 「コントローラー」は含まれて定義されていますか?
  2. コントローラの構築中に 500 を引き起こすようなことはありますか?
  3. このスニペットを作成するために削除したコードに構文エラーはありますか?

まず、Apache のログを確認します。Ubuntu では、通常、/var/log/apache2/error.log にあります。エラー ログに何も出力されない場合は、メモリまたは時間が不足している可能性があります。これが事実であるとは思えませんが、そうである場合、これらが役立ちます:

ini_set('memory_limit', '1G'); set_time_limit(3600);

それらは診断に役立ちますが、ユースケースに合わせてランタイムを構成したいと考えています。

エラー ログに何かが記録されている場合は、調査してください。おそらく問題です。

これらのどれも役に立たない場合は、スクリプトの途中で死んでみて、どこまで到達するかを確認してください. 問題のあるコードに到達するとすぐに、死ぬメッセージを出力せずに、それ自体で死にます。

die("着いた");

于 2013-04-18T14:46:11.303 に答える