我在下面使用的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;
编辑:(测试OP代码后)
您的headers-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));
将错误报告添加到文件顶部,这将有助于查找错误。
<?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方法(如果省略),这是它失败的另一个可能原因,因为可能存在未定义的索引通知,如果您的系统上没有设置错误报告,则您可能看不到错误报告,并捕获和显示错误/通知/警告。
因此,您需要检查empty()
'ness。
- http://php.net/manual/en/function.empty.php
即:
if(!empty($_POST['var'])) { $name = $_POST['name']; }
,并将该逻辑应用于POST阵列的其余部分。
还使用一个带条件语句的命名提交按钮来包装可执行代码。
即:<input type="submit" name="submit" value="SUBMIT">
则if(isset($_POST['submit'])) {...}
同时检查输入中的任何一个是否为空。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只能在暂存中进行,而不能在生产中进行。