0

我有一个关于使这两段代码一起工作的问题。我已经经历了几天努力寻找为什么这会产生一个指向contact.php而不是发送带有数据的电子邮件的空白页面。只需姓名、公司名称和电子邮件。我不是 php 程序员,希望能得到帮助,或者如果有人能引导我朝着正确的方向前进。

HTML5 示例

<form method="post" action="contact.php">
    <fieldset>
        <label for="alerts-name">Your Name</label> 
        <input type="text" name="name" id="alerts-name"  class="input" maxlength="30">
        </fieldset>
        <fieldset>
          <label for="alerts-business">Business Name</label> 
          <input type="text" name="business" id="alerts-business" class="input" maxlength="50">
        </fieldset>
        <fieldset>
          <label for="alerts-email">Your email</label> 
          <input type="text" name="email" id="alerts-email" class="input" maxlength="30">
        </fieldset>
        <label>*What is 2+2? (Anti-spam)</label><br />
        <input name="human" placeholder="Type Here">
        <fieldset>
        <br />
        <fieldset>
          <input type="submit" value="submit">
        </fieldset>
      </form>

下面是我正在使用的 php 代码。

<?php
  $name = $_POST['name'];
  $business = $_POST['business'];
  $email = $_POST['email'];
  $from = 'From: The Web Site';
  $to = 'myemail@site.com';
  $subject = 'Hello';
  $human = $_POST['human'];
  $body = "From: $name\n business: $business\n email:\n $email";

  if ($_POST['submit'] && $human == '4') {
  if (mail ($to, $name, $business, $email) ) {
  echo '<p>Your message has been sent!</p>';

  } else {
  echo '<p>Something went wrong, go back and try again!</p>';
  }
  } else if ($_POST['submit'] && $human != '4') {
  echo '<p>You answered the anti-spam question incorrectly!</p>';
  }

  ?>
4

2 回答 2

2

您能否确认这是您在“contact.php”文件中的 PHP 代码?还是所有这些都在同一个文件中?

您没有在 PHP 中使用 $subject 变量。您的“human”元素也应该在 HTML 中具有 type="text" (或type="number")属性。

在使用电子邮件执行任务时,我使用 PHPMailer 扩展取得了更大的成功,您可以从github获取最新版本。那里有一个很好的用法示例可以帮助您入门。

另外,顺便说一句,当您使用 HTML5 进行编码时,您可以安全地使用新的“电子邮件”类型的输入,它具有一些不错的内置验证:

 <input type="email" name="email" id="alerts-email" class="input" maxlength="30">
于 2013-03-21T20:09:15.057 回答
0

首先,您的“发件人”标头格式不正确 - 这应该是:

'From: The Website <the@website.com>';或者应该简单地省略,因为这是mail()函数的可选参数。

然后,您还将四个参数传递给该mail()函数 - 收件人、姓名、业务和电子邮件。PHP 文档中列出了适当的参数,它们是:

mail (string $to, string $subject, string $message[, string $additional_headers[, string $additional_parameters]]);

从这个意义上说,您的函数应该更像是:

mail($to, $subject, $email);

tl;博士:

作为$business邮件功能的一部分,您应该真正包含消息,这意味着您的电子邮件正文被解释为电子邮件标题并且格式完全不正确。

于 2013-03-21T20:08:07.420 回答