PHP邮件发送简单的联系方式
我一直试图在PHP中使用mail()函数,但在测试联系人表单时,似乎无法获得发送到我电子邮件地址的消息。它只会显示在白色屏幕上,不再显示。。它甚至没有显示下面的成功信息 这是PHP:PHP邮件发送简单的联系方式,php,html,forms,email,mailer,Php,Html,Forms,Email,Mailer,我一直试图在PHP中使用mail()函数,但在测试联系人表单时,似乎无法获得发送到我电子邮件地址的消息。它只会显示在白色屏幕上,不再显示。。它甚至没有显示下面的成功信息 这是PHP: <?php if(isset($_POST['submit'])) { $name = $_POST['name']; $address = $_POST['address']; $number = $_POST['number']; $email = $_POST['email']; $message =
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$address = $_POST['address'];
$number = $_POST['number'];
$email = $_POST['email'];
$message = $_POST['message'];
$subject = 'Message from Reef website';
$to = 'myemail@hotmail.co.uk';
if (empty($name) || empty($address) || empty($number) || empty($email) || empty($subject) || empty($message)) {
if (empty($name))
$error['name'] = "Please enter your Full Name";
if (empty($name))
$error['address'] = "Please enter your address";
if (empty($name))
$error['number'] = "Please enter a contact number";
if (empty($email))
$error['email'] = "Please enter a valid Email Address";
if (empty($message))
$error['message'] = "Please write a message, enquiries or other concerns above";
}
else { //if not empty
$headers="From: {$email}\r\nReply-To: {$email}";
mail($to,$subject,$message,$headers);
$success = "Thank you! You're email has been sent.";
}
}
?>
php.ini文件中的SMTP服务器设置是什么?您需要运行SMTP服务器才能发送邮件 一个更简单的解决方案是使用 你有一个问题 您正试图像这样访问数字值
$number = $_POST['number'];
但在您的表单中,它是name=“text”
因此,将表单字段更改为
<input id="number" name="number" type="text" required autofocus>
这导致您的验证失败
if (empty($name))
$error['name'] = "Please enter your Full Name";
if (empty($name))
$error['address'] = "Please enter your address";
if (empty($name))
$error['number'] = "Please enter a contact number";
在每个if
语句中都使用了$name
。使用相应的变量进行更改
和
改变
到
我想你明白了。您正在检查父级
if
语句中的空($number)
,该语句始终为true
,由于变量错误($name
),您没有收到任何消息。我想,您没有在php.ini中设置SMTP数据
如果可以的话,可以使用其他库发送邮件,比如,之所以会发送到空白页面,是因为PHP页面是空白的!你似乎没有在页面上的任何地方重复你的成功信息 我建议更改您的表单,使HTML如下所示:
<form method="POST">
然后将PHP粘贴到该页面的顶部。记住将页面类型设置为.php而不是.html/.htm
最后,在表单顶部添加一个回音,这样成功消息将沿着
<?php
if ($success) {
echo $success;
}
?>
更改
mail($to,$subject,$message,$headers);
到
也要更改ifs,因为只检查一个变量
if (empty($name))
始终为$name
放入第一行进行调试:
error_reporting(E_ALL);
你为什么要用“身份证”呢
<input id="name" name="name" type="text" required autofocus>
这是因为您没有回显任何错误。.回显它们您将知道错误是什么。.使用错误报告(e\u all);在第一行,给我们错误谢谢,这绝对有帮助!谢谢它现在正在工作,除了PHP成功消息会打断页面并显示在左角?但至少现在它发送到了电子邮件!在这种情况下,在成功消息周围添加更多html,例如
if (empty($name))
error_reporting(E_ALL);
<input id="name" name="name" type="text" required autofocus>