PHP 联系表邮件功能不工作
PHP Contact Form Mail Function Not Working
我一直在尝试为一个网站实现 PHP 联系人,这似乎是我不应该坚持的事情,但我让 运行 陷入困境。我一直将我的 HTML 和 PHP 放在不同的文件中,我认为这是很好的做法,所以我的设置如下所示:
HTML(我的 index.php 文件)
<head>
<?php include '../scripts/site.php' ?>
</head>
<form action='../scripts/site.php' method='post'>
<input type=text class="formfields" placeholder="Name" name="name">
<br><br>
<input type=email class="formfields" placeholder="Email" name="contact_email"> <br><br>
<textarea type=text placeholder="Tell Us About Your Project" name="message"></textarea>
<br><br>
<input class="submit" type="submit" value="Send">
</form>
PHP(我的脚本目录中的 site.php 文件)
<?php
if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {
echo $name = $_POST['name'];
echo $contact_email = $_POST['contact_email'];
echo $message = $_POST['message'];
if(!empty($name) && !empty($contact_email) && !empty($message){
$to = 'tom.eldridge@hotmail.com';
$subject = 'contact email';
$body = $message;
$headers = 'From: ' .$contact_email;
mail($to, $subject, $body, $headers);
if(mail($to, $subject, $body, $headers)){
echo 'Thanks for contacting us!';
}
else{
echo 'Message could not be sent';
}
}
else{
echo 'All fields are required';
}
}
?>
我觉得我在尝试让 HTML 和 PHP 相互通信时可能在我的代码中犯了结构性错误。我认为邮件程序本身很好,但我可能是错的。
我正在实际网站上尝试此操作,因此这不是 locahost/host 问题。 (是的,我意识到该表格不是远程安全的,我计划在我正确邮寄它后立即修复它。)
从 if 语句中删除 =
。它应该是 (!empty())
而不是 (!=empty())
此外,您从未在第二个 if 语句中关闭 ()
。
if((!empty($name)) && (!empty($contact_email)) && (!empty($message))){
上面一行可以解决你的很多问题。将其添加到您的脚本中。
如果您在表单的 action 属性中引用代码,则不必包含 PHP 代码。
此外,如果您能更具体地说明所看到的错误,我会更好地帮助您。
复习当前代码并消除任何可能的错误将引导您来到这里。试试这个,如果还有错误请告诉我。
<?php
if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {
$name = $_POST['name'];
$contact_email = $_POST['contact_email'];
$message = $_POST['message'];
if(!empty($name) && !empty($contact_email) && !empty($message){
$to = 'tom.eldridge@hotmail.com';
$subject = 'contact email';
$body = $message;
$headers = 'From: ' .$contact_email;
mail($to, $subject, $body, $headers);
if(mail($to, $subject, $body, $headers)){
echo 'Thanks for contacting us!';
}
else{
echo 'Message could not be sent';
}
}
else{
echo 'All fields are required';
}
}
?>
在PHP中,使用isset或empty时使用NOT EQUAL
,其实就是下面这样;
if(!empty()){
if(!isset()){
您的用法对于比较值是正确的,例如在以下情况中;
if($var1 != $var2){
这里可能还有一些有用的信息;
http://php.net/manual/en/language.operators.comparison.php 但同时这应该对您有所帮助。
我一直在尝试为一个网站实现 PHP 联系人,这似乎是我不应该坚持的事情,但我让 运行 陷入困境。我一直将我的 HTML 和 PHP 放在不同的文件中,我认为这是很好的做法,所以我的设置如下所示:
HTML(我的 index.php 文件)
<head>
<?php include '../scripts/site.php' ?>
</head>
<form action='../scripts/site.php' method='post'>
<input type=text class="formfields" placeholder="Name" name="name">
<br><br>
<input type=email class="formfields" placeholder="Email" name="contact_email"> <br><br>
<textarea type=text placeholder="Tell Us About Your Project" name="message"></textarea>
<br><br>
<input class="submit" type="submit" value="Send">
</form>
PHP(我的脚本目录中的 site.php 文件)
<?php
if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {
echo $name = $_POST['name'];
echo $contact_email = $_POST['contact_email'];
echo $message = $_POST['message'];
if(!empty($name) && !empty($contact_email) && !empty($message){
$to = 'tom.eldridge@hotmail.com';
$subject = 'contact email';
$body = $message;
$headers = 'From: ' .$contact_email;
mail($to, $subject, $body, $headers);
if(mail($to, $subject, $body, $headers)){
echo 'Thanks for contacting us!';
}
else{
echo 'Message could not be sent';
}
}
else{
echo 'All fields are required';
}
}
?>
我觉得我在尝试让 HTML 和 PHP 相互通信时可能在我的代码中犯了结构性错误。我认为邮件程序本身很好,但我可能是错的。
我正在实际网站上尝试此操作,因此这不是 locahost/host 问题。 (是的,我意识到该表格不是远程安全的,我计划在我正确邮寄它后立即修复它。)
从 if 语句中删除 =
。它应该是 (!empty())
而不是 (!=empty())
此外,您从未在第二个 if 语句中关闭 ()
。
if((!empty($name)) && (!empty($contact_email)) && (!empty($message))){
上面一行可以解决你的很多问题。将其添加到您的脚本中。
如果您在表单的 action 属性中引用代码,则不必包含 PHP 代码。
此外,如果您能更具体地说明所看到的错误,我会更好地帮助您。
复习当前代码并消除任何可能的错误将引导您来到这里。试试这个,如果还有错误请告诉我。
<?php
if(isset($_POST['name']) && isset($_POST['contact_email']) && isset($_POST['message'])) {
$name = $_POST['name'];
$contact_email = $_POST['contact_email'];
$message = $_POST['message'];
if(!empty($name) && !empty($contact_email) && !empty($message){
$to = 'tom.eldridge@hotmail.com';
$subject = 'contact email';
$body = $message;
$headers = 'From: ' .$contact_email;
mail($to, $subject, $body, $headers);
if(mail($to, $subject, $body, $headers)){
echo 'Thanks for contacting us!';
}
else{
echo 'Message could not be sent';
}
}
else{
echo 'All fields are required';
}
}
?>
在PHP中,使用isset或empty时使用NOT EQUAL
,其实就是下面这样;
if(!empty()){
if(!isset()){
您的用法对于比较值是正确的,例如在以下情况中;
if($var1 != $var2){
这里可能还有一些有用的信息; http://php.net/manual/en/language.operators.comparison.php 但同时这应该对您有所帮助。