PHPmailer 和 vanilla JavaScript AJAX 表单提示

所以,我需要一个联系表单,它可以发送带有“成功”提示的电子邮件,该提示出现在我的表单中,而无需重新加载。我发现 PHPmailer 有助于将邮件发送到收件箱而不是垃圾邮件(仅此一项工作正常,电子邮件直接发送到收件箱)。然后我添加 JS 验证,然后是 AJAX,然后是处理 JSON 响应的 PHP。


当我单击“发送”(好!)时出现“成功”提示,但问题是没有发送/接收电子邮件。没有 AJAX 的代码在我的本地和网络主机上都可以正常工作。如何优化它,以便出现成功提示并发送电子邮件(收件箱,理想情况下)?


请不要使用 jQuery 或任何额外的插件。


提前致谢。


HTML:


<div class="contact-form">

    <form action="mail.php" method="POST" onsubmit="return doRegister()">

        <input id="mail-name" type="text" name="name" placeholder="Your Name">

        <span id="name-alert"></span>

        <input id="mail-email" type="text" name="email" placeholder="Your Email">

        <span id="email-alert"></span>

        <input id="mail-subject" type="text" name="subject" placeholder="Your Subject">

        <span id="subject-alert"></span>

        <textarea id="mail-message" name="message" placeholder="Your Message"></textarea>

        <span id="message-alert"></span>

        <input type="submit" value="Send">

        <input type="reset" value="Clear">

        <span class="contact__form--alert-success" id="success-alert"></span>

    </form>

</div>

JS:


function doRegister() {

  let checks = {

    name : document.getElementById("mail-name"),

    email : document.getElementById("mail-email"),

    subject : document.getElementById("mail-subject"),

    message : document.getElementById("mail-message")

  },


元芳怎么了
浏览 154回答 1
1回答

FFIVE

您的 PHP 脚本不会发送邮件,因为send()未调用该函数,因此在验证后,您应该添加如下内容:if(empty($error)){&nbsp; &nbsp; if(!$mail->send()){&nbsp; &nbsp; &nbsp; &nbsp; $error[] = 'There was an error sending the mail. Please try again!';&nbsp; &nbsp; }}echo json_encode(["status" => count($error)==0 ? 1 : 0,"error" => $error]);这样您就可以发送邮件,如果出现问题(send()返回false),则会将错误添加到您的错误数组中。
打开App,查看更多内容
随时随地看视频慕课网APP