1

我用一个非常简单的 php 电子邮件提交脚本和表单制作了一个 contact.php 文件。脚本和表单在同一个文件中。对于我的生活,我无法让它在提交时发送电子邮件。如果我删除 isset($_POST['submit'] 的 if 语句,那么它当然会在页面加载时自动发送邮件,我确实收到了。但是一旦我将它设置为仅在提交时工作,我没有收到电子邮件。现在我使用的是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"]; ?>. 我确信这是我想念的简单的东西,但我真的在浪费时间试图弄清楚这一点。同样,如果我删除检查 $_POST['submit'] 的 if 语句,它确实会发送邮件,所以我知道它会发送。但这就像我的提交输入与脚本不正确,或者其他什么。没有把握。

4

3 回答 3

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">
于 2013-06-27T23:32:49.710 回答
1

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

于 2013-06-27T23:32:56.120 回答
1

试试看!

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

//..... 发送

}

于 2013-06-27T23:34:52.133 回答