我的问题是,我通过ajax请求收到500个内部服务器错误,但mailer.php仍然发送邮件。 我不知道为什么会出现服务器错误,我查看了几个看起来相似的问题,但这对我没有帮助,所以我希望有人知道该怎么做。

我的form.js看起来像这样:

$(function() {

// Get the form.
var form = $('#ajax-contact');

// Get the messages div.
var formMessages = $('#form-messages');

// Set up an event listener for the contact form.
$(form).submit(function(e) {
    // Stop the browser from submitting the form.
    e.preventDefault();

    // Serialize the form data.
    var formData = $(form).serialize();

    // Submit the form using AJAX.
    $.ajax({
        type: 'POST',
        url: $(form).attr('action'),
        data: formData
    })
        .done(function(response) {
            // Make sure that the formMessages div has the 'success' class.
            $(formMessages).removeClass('error');
            $(formMessages).addClass('success');

            // Set the message text.
            $(formMessages).text(response);

            // Clear the form.
            $('#lname').val('');
            $('#email').val('');
            $('#size_s').val('0');
            $('#size_m').val('0');
            $('#size_l').val('0');
            $('#size_xl').val('0');
            $('#size_xxl').val('0');
            $('#strasse').val('');
            $('#plzort').val('');
        })
        .fail(function(data) {
            // Make sure that the formMessages div has the 'error' class.
            $(formMessages).removeClass('success');
            $(formMessages).addClass('error');

            // Set the message text.
           if (data.responseText !== '') {
                $(formMessages).text(data.responseText);
           } else {
                $(formMessages).text('Oops! An error occured and your message could not be sent.');
            }
        });

});});

我的PHP:

 <?php
// Only process POST reqeusts.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Get the form fields and remove whitespace.
    $lname = strip_tags(trim($_POST["lname"]));
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
    $strasse = strip_tags(trim($_POST["strasse"]));
    $ort = $_POST["ortplz"];
    $size_s = $_POST['size_s'];
    $size_m = $_POST['size_m'];
    $size_l = $_POST['size_l'];
    $size_xl = $_POST['size_xl'];
    $size_xxl = $_POST['size_xxl'];
    $preis = 67.18;
    $gesamtpreis = number_format(($size_xxl + $size_xl + $size_l + $size_m) * $preis, 2);
    $preisOMwst = number_format($gesamtpreis * 0.81, 2);
    $Mwst = number_format($gesamtpreis * 0.19, 2);
// Check that data was sent to the mailer.
if (empty($lname) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // Set a 400 (bad request) response code and exit.
    http_response_code(400);
    echo "Etwas ist schief gelaufen! Versuchen Sie es erneut.Fehlercode: 400 (bad request)";
    exit;
}

// Empfängeradresse angeben
//FIXME: RECIPIENT
$recipient = "john.doe@samplemail.com";

// Set the email subject.
$subject = "Neue Bestellung von $lname";

// E-Mail Inhaltaufbau
$email_content = "Name: $lname\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Straße: $strasse\n\n";
$email_content .= "Ort: $ort\n\n";
if ($size_s == 0 && $size_m == 0 && $size_l == 0 && $size_xl == 0 && $size_xxl == 0) {
    //ERROR
} else {
    $email_content .= "Größe: S: $size_s | M: $size_m   | L: $size_l | XL: $size_xl  | XXL: $size_xxl\n";
}
$email_content .= "\n Netto: $preisOMwst € \n Zzgl. 19% MwSt: $Mwst € \n Zu Zahlen: $gesamtpreis €";
// Email headers
$headers = "From: $lname <$email>" . "\r\n";
$headers .= "Content-type: text/plain; charset=UTF-8" . "\r\n";

// Senden

   if (mail($recipient, $subject, $email_content, $headers)) {
       // Set a 200 (okay) response code.
       http_response_code(200);
       echo "Danke! Ihre Bestellung wurde aufgegeben.";

   } else {
       // Set a 500 (internal server error) response code.
       http_response_code(500);
       echo "Etwas ist schief gelaufen! Versuchen Sie es erneut. Fehlercode: 500 (Internal Server Error)";
   }

} else {
    // Not a POST request, set a 403 (forbidden) response code.
    http_response_code(403);
    echo "Etwas ist schief gelaufen! Versuchen Sie es erneut. Fehlercode: 403 (forbidden)";
    }

我的HTML表单:

     <form id="ajax-contact" action="mailer.php" method="get">
<input id="fname" type="text" name="fname" required>
        <p><label for="lname" class="input-label first"> Vor- und Nachname: </label><input id="lname" type="text" name="lname" required></p>
        <p><label for="email" class="input-label first">  E-Mail: </label><input id="email" type="email" name="email" required></p>
        <p><label for="strasse" class="input-label first">  Straße und Hausnummer: </label><input id="strasse" type="text" name="strasse" required></p>
        <p><label for="ortplz" class="input-label first">  PLZ und Ort: </label><input id="ortplz" type="text" name="ortplz" required></p>
        <p style="margin-bottom:10px;"><span class="input-label first" style="float:none;">  Menge: </span></p>
        <div style="overflow: hidden; display:flex;">
        <p><label for="size_s" class="input-label first size">  S: </label><input id="size_s" type="text" name="size_s" value="0" readonly="true" style="color:gray !important;"></p>
        <p><label for="size_m" class="input-label size">  M: </label><input id="size_m" type="text" name="size_m" value="0"></p>
        <p><label for="size_l" class="input-label size">  L: </label><input id="size_l" type="text" name="size_l" value="0"></p>
        <p><label for="size_xl" class="input-label size">  XL: </label><input id="size_xl" type="text" name="size_xl" value="0"></p>
        <p><label for="size_xxl" class="input-label size">  XXL: </label><input id="size_xxl" type="text" name="size_xxl" value="0"></p>
        </div>
        <button id="open" class="my_popup_open">Bestellung überprüfen</button>
        <p id="form-messages"></p>

        </form>

    <div id="my_popup">
        <input type="checkbox" name="agb" value="agb" id="agb" form="ajax-contact"> Ich akzeptiere die <a class="nonblock" href="agb.html">AGB</a> von mencreation und stimme dem <a class="nonblock" href="agb.html#widerruf">Widerrufsrecht</a> zu!</p><br>
            <form><input id="senden" type="submit" value="Zahlungspflichtig bestellen" form="ajax-contact"></form>

            <!-- Add an optional button to close the popup -->
            <button id="close" class="my_popup_close">Abbrechen</button>


        </div>

我发现,如果我在发送部分的周围放了if(!isset($_POST["fname"])) (这是我的蜜罐字段),我会得到OK代码200。因此,如果在PHP中看起来像这样:

// Senden
if(!isset($_POST["fname"])) {
    if (mail($recipient, $subject, $email_content, $headers)) {
        // Set a 200 (okay) response code.
        http_response_code(200);
        echo "Danke! Ihre Bestellung wurde aufgegeben.";

    } else {
        // Set a 500 (internal server error) response code.
        http_response_code(500);
        echo "Etwas ist schief gelaufen! Versuchen Sie es erneut. 

Fehlercode: 500 (Internal Server Error)";
        }
    }
    } else {
        // Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo "Etwas ist schief gelaufen! Versuchen Sie es erneut. Fehlercode: 403 (forbidden)";
    }

但是后来邮件不再发送了。

我只是不知道怎么可能,因为在200码的情况下,jax请求成功了,所以邮寄者应该发送邮件,不是吗?

顺便说一句:我很久以前找到了这封邮件,并在另一个网站上使用了它,效果很好。

提前致谢!

  ask by kelevra translate from so

本文未有回复,本站智能推荐:

1回复

使用表单(ajax,jquery和PHP)发送电子邮件

我试图使用表单发送电子邮件,但出现此错误,我认为是SMTP配置或其他相关问题,我在本地计算机上使用WAMP 当我选择发送时,出现此错误: (!)警告:mail():无法连接到位于“ localhost”的邮件服务器。 端口25,请验证您的“ SMTP” 和“ smtp_port”
2回复

联系表格不起作用[PHP / AJAX]

当我对其进行测试时,我会弹出一个弹出窗口,说明正在提交,但是即使所有内容都通过电子邮件成功发送给我,我也会从ajax部分收到一条消息,提示存在错误。 我认为一个问题是,PHP和AJAX都有两种不同的提交消息。 那么需要PHP吗? 帮助将不胜感激。 更新: 我收到的错误消息是
4回复

PHP邮件表单,带有使用AJAX发送的单选按钮

TL; DR解决方案:对于任何无线电输入,请将javascript中的.val更改为.serialize。 我一直在使用本教程来构建一种表单,当按下“提交”按钮时,该按钮将逐渐淡出,并逐渐出现“感谢”消息,并在后台发送mailer.php。 我的表单具有单选按钮,我似乎无法弄清楚如何获
3回复

AJAX / PHP电子邮件程序不发送电子邮件

这是我的PHP邮件程序代码: 这是我的AJAX电子邮件功能: 这是我的表格: 首先,当我将所有字段留空时,它仍然显示“成功”屏幕。 其次,即使输入有效数据,我也不会收到发送的电子邮件。 我已经多次检查了代码,对我来说似乎还可以。 请帮助我找到我错了。
2回复

邮件服务器上的Laravel错误

我尝试过在两个不同的环境中设置该项目,并且无论PHP版本如何,都会遇到相同的错误 经过大约5-6个小时的测试,我无法摆脱此错误。
3回复

phpmailer在发送电子邮件时打印详细信息的长列表(客户端->服务器)

我有一个使用PHPMailer的脚本。 当我运行它以发送电子邮件时,PHPMailer成功发送电子邮件。 但是还回显电子邮件发送信息的长列表(客户端->服务器),例如: 该脚本由以下人员激活: 我真正想要的是只发送电子邮件,打印MESSAGE SENT,无需此长
1回复

SMTP错误:使用其他服务器而不是SMTP时无法连接到SMTP主机

我正在用PHP工作。 我具有使用Yii框架的邮件扩展程序以及以下代码的wriiten邮件功能: 其中$ setting-> $ Host =“ mail.balaee.com”,$ setting-> $ Port = 25。 在php.ini文件中,设置为- 当
1回复

PHP邮件功能在我的服务器中不起作用

我正在使用Parallels Panel Sever作为MY网站。 它是Windows平台。 我没有使用IIS Server.Php邮件功能不起作用。 我收到此错误。 警告:mail()[function.mail]:SMTP服务器响应:503尝试发送到非本地电子邮件地址时,此邮件服