我在下面使用的Php代码,它发送空白电子邮件而不捕获值
<?php
$name = $_POST['name'];
$from = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$to = 'test@gmail.com';//replace with your email
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
die;
答案 0 :(得分:2)
编辑(在测试OP&#39;之后)
您的标题 - mail()
参数失败了。
我注意到你借用了http://php.net/manual/en/function.mail.php
手册中的一个例子这是您发布的代码:
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: Sender Name <sender@domain.com>";
$headers[] = "Bcc: JJ Chong <bcc@domain2.com>";
$headers[] = "Reply-To: Recipient Name <receiver@domain3.com>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
但未能使用手册中示例中的implode()
函数:
mail($to, $subject, $email, implode("\r\n", $headers));
如果您将错误报告设置为捕获并显示,您将看到以下内容:
警告:mail()期望参数4为字符串,在第x行的/path/to/file.php中给出的数组
因此,您需要将最后一行修改为:
mail($to, $subject, $message, implode("\r\n", $headers));
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
但是,我原来答案的其余部分也应该为您提供更多信息。
由于您没有向我们提供您的HTML表单,我提交了以下答案。
根据手册http://php.net/manual/en/tutorial.forms.php
示例#1简单的HTML表单
<form action="action.php" method="post">
<p>Your name: <input type="text" name="name" /></p>
<p>Your age: <input type="text" name="age" /></p>
<p><input type="submit" /></p>
</form>
示例#2从表单打印数据
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.
如果你的HTML表单(你没有在你的问题中包含)不使用POST方法,和/或输入不具有与POST数组相同的名称属性,那么这就是为什么你收到空白值,或者你的HTML表单和PHP在同一个文件中,并在初始页面加载时发送空白值的原因。
旁注:如果您的表单未明确使用POST方法,则表单默认为GET方法(如果省略),由于可能的未定义索引通知您,它可能导致失败的另一个原因可能没有看到您的系统上是否设置了error reporting并捕获并显示错误/通知/警告。
因此,您需要检查empty()
&#39; ness。
即:
if(!empty($_POST['var'])) { $name = $_POST['name']; }
并将该逻辑应用于其余的POST阵列。
还使用带有条件语句的命名提交按钮,其中包含可执行代码。
即:<input type="submit" name="submit" value="SUBMIT">
然后if(isset($_POST['submit'])) {...}
检查是否有任何输入填充/非空。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。