【发布时间】:2016-07-22 00:39:56
【问题描述】:
我有一个使用基本联系表单构建的响应式网站。我正在尝试使用我过去使用过的 PHPHMailer。由于某种原因,我的表单中的值没有进入 PHPMailer。我通过在“name”、“email”、“subject”和“message”中放置硬编码值进行了测试,该表单将毫无问题地工作。在尝试发送邮件之前,我尝试使用“isset”来确保是值(我这样做是因为没有“isset”我得到一个“未定义的索引”错误,告诉我没有值。这段代码在我的基本表单没有响应,但在这个表单上没有。我很难过。欢迎提出任何建议。这是我的 html 和 PHP 代码。谢谢!*我已更新代码,因为我已将问题缩小到Java 脚本。在 HTML 中,“form id="main-contact-form" 正在触发以下 js 代码
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});
正是这个 js 导致了这个问题。我目前正试图找出原因。感谢那些之前试图提供帮助的人。
<form id="main-contact-form" name="contact-form" method="post" action="contact.php">
<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required="required">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email Address" required="required">
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required="required">
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn-submit">Send Now</button>
</div>
</form>
还有我的 PHP;
<?php
$email = $_REQUEST['email'];
$name = $_REQUEST['name'];
$message = $_REQUEST['message'];
$subject = $_REQUEST['subject'];
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'myhost.com';
$mail->SMTPAuth = true;
$mail->Username = 'me@myemail.com';
$mail->Password = 'mypassword';
$mail->SMTPSecure = 'tls';
$mail->From = $email;
$mail->FromName = $name;
$mail->addAddress('me@myemail.com');
$mail->addReplyTo($email);
$mail->WordWrap = 50;
$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $message;
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent';
?>
【问题讨论】:
-
永远不要用提交按钮的值直接检查发布的值。
if (isset($_POST['submit'])) {出现错误是因为您的提交按钮没有name和value属性 -
我尝试了所有答案,不幸的是它们也没有工作。我同意你从不检查提交按钮的观点,我认为那是出于绝望,没有其他任何工作。
-
是的,没有错误报告,我的 php 日志中也没有。我在实时服务器上
-
向您的服务器提供商询问您的服务器上的邮件设置是否正确配置?
-
是的,如果我在 php 中输入硬编码的值,我可以发送邮件,我在该服务器上的其他网站使用此代码使用此响应式网站上没有的简单表单跨度>