所以,我需要一个联系表单,它可以发送带有“成功”提示的电子邮件,该提示出现在我的表单中,而无需重新加载。我发现 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") },
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
您的 PHP 脚本不会发送邮件,因为send()未调用该函数,因此在验证后,您应该添加如下内容:
if(empty($error)){
if(!$mail->send()){
$error[] = 'There was an error sending the mail. Please try again!';
}
}
echo json_encode([
"status" => count($error)==0 ? 1 : 0,
"error" => $error
]);
这样您就可以发送邮件,如果出现问题(send()返回false),则会将错误添加到您的错误数组中。
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消
