另一个PHP联系表单没有发送

时间:2013-06-27 23:22:13

标签: php html5 forms post contact-form

我用一个非常简单的php电子邮件提交脚本和表单制作了一个contact.php文件。脚本和表单位于同一文件中。对于我的生活,我无法通过提交发送电子邮件。如果我删除了isset的if语句($ _ POST ['submit'],那么它当然会在页面加载时自动发送邮件,我确实收到了。但是一旦我将其设置为仅提交,我没有收到电子邮件。现在我正在使用gmail帐户,但我不会迟到。我不是php的专家,但从研究来看,这似乎是一个非常简单的脚本。我尝试了很多不同的变体,我现在只想保持这个简单。我的表格符合HTML5标准,我在发送之前使用HTML5进行验证,所以现在我不需要任何类型的验证。我不知道为什么这不会发送。我尝试了不同的标题。我已尽可能多地搜索stackoverflow,看看是否有任何解决方案,我已尝试了几种,但我仍然无法将其发送。

contact.php代码:

<?php
if(isset($_POST['submit']))
{
  $to = 'someone@gmail.com';
  $subject = 'Contact Form Submission';
  $name = $_POST['name'];
  $email = $_POST['email'];
  $telephone = $_POST['telephone'];
  $website = $_POST['website'];
  $message = $_POST['message'];

  $header = 'MIME-Version: 1.0' . "\r\n";
  $header .= "From: ". $email ."\r\n";
  $header .= "Reply-To: ". $email ."\r\n";
  $header .= "Content-type: text/html; charset= utf-8 \r\n";

  $body = "From: $name\n E-Mail: $email\n Telephone: $telephone\n Website: $website\n 
  Message:\n $message";

  if(mail($to, $subject, $body, $header))
  {
    echo 'Thank you! Your message has been sent. We will try to contact you within one 
    business day.';
  }
  else
  {
    echo 'There was an error with your submission. Please try again.';
  }
}
?>

<form action="contact.php" method="post">
<div>
    <label>Name</label>
    <input name="name" type="text" placeholder="Full Name" required>

    <label>E-mail</label>
    <input name="email" type="email" placeholder="someone@somewhere.com" required>

    <label>Telephone</label>
    <input name="telephone" type="tel" placeholder="xxx-xxx-xxxx" required>

    <label>Website (Optional)</label>
    <input name="website" type="url" placeholder="http://www.yoursite.com">
</div>

<div>
    <label>Message</label>
    <textarea name="message" placeholder="Type what you want here" required></textarea>

    <input id="submit" name"submit" type="submit" value="Send Message">
</div>

<div class="call">
    <span>Or call us at (555) 555-5555</span>
</div>
</form>

我还试图取消对表单标记的操作,因为它是从同一个文件调用脚本,我尝试使用<?= $_SERVER["PHP_SELF"]; ?>。我确信这是一件我想念的简单事情,但我真的在浪费时间试图解决这个问题。同样,如果我删除if语句检查$ _POST ['submit'],它会发送邮件,所以我知道它会发送。但是就像我的提交输入不正确的脚本或其他东西。不确定。

3 个答案:

答案 0 :(得分:6)

您的代码(错误):

<input id="submit" name"submit" type="submit" value="Send Message">

您有 name"submit" 而不是 name = "submit"


但正确的代码是:

<input id="submit" name="submit" type="submit" value="Send Message">

答案 1 :(得分:1)

通过检查是否在帖子请求中设置了所有必需参数来替换条件以发送电子邮件。

答案 2 :(得分:1)

试一试!

if($ _ POST ['submit'] =='发送消息'){

// .....发送

}