HTML表单到PHP脚本不发送邮件

时间:2013-06-30 15:18:16

标签: php html email

我正在使用一个模板来创建我的网站,它附带了一个联系页面和表单,但它没有一个php联系人脚本所以我写了这个并将其设置为html表单上的操作它仍然不会向我发送任何东西给我的电子邮件...我通过gmail设置了(我将域名电子邮件交换DNS更改为gmail设置) 在html联系表单中,我有以下代码:

<div id="contact_form"><form method="post" name="contact" action="contact-form-handler.php">                        
<label for="name">Name:</label> <input type="text" id="name" name="name" class="required input_field" /><div class="cleaner h10"></div>
<label for="email">Email:</label> <input type="text" id="email" name="email" class="validate-email required input_field" /><div class="cleaner h10"></div>                       
<label for="subject">Subject:</label> <input type="text" name="subject" id="subject" class="input_field" /><div class="cleaner h10"></div>      
<label for="text">Message:</label> <textarea id="text" name="text" rows="0" cols="0" class="required"></textarea><div class="cleaner h10"></div>                      
<input type="submit" value="Send" id="submit" name="submit" class="submit_btn float_l" />  
<input type="reset" value="Reset" id="reset" name="reset" class="submit_btn float_r" />
</form>

和contact-form-handler.php包含以下代码来处理html表单:

<?php
$to = 'info@jamesreborne.co.uk';
$to .= 'damgxx@gmail.com';

// Assigning data from the $_POST array to variables
$name = $_post['sender_name'];
$email = $_post['sender_email'];
$subject = $_post['sender_subject'];
$text = $_post['sender_text'];

// Construct email subject
$content = 'www.jamesreborne.co.uk Message from visitor ' . $name;

// Construct email body
$body_message = 'From: ' . $name . "\r\n";
$body_message .= 'E-mail: ' . $email. "\r\n";
$body_message .= 'Subject: ' . $subject . "\r\n";
$body_message .= 'Message: ' . $text;

// Construct email headers
$headers = 'From: ' . $email . "\r\n";
$headers .= 'Reply-To: ' . $email . "\r\n";

mail($to, $content, $body_message, $headers);

$mail_sent = mail($to, $content, $body_message, $headers);

if ($mail_sent == true){ ?>
    <script language="javascript" type="text/javascript">
    alert('Thank you for the message. We will contact you shortly.');
    window.location = 'contact.html';
    </script>
<?php } 

else { ?>
<script language="javascript" type="text/javascript">
    alert('Message not sent. Please, notify the site administrator info@jamesreborne.co.uk');
    window.location = 'contact.html';
</script>
<?php
}
?>

如果有人能提供帮助那就太棒了,谢谢

3 个答案:

答案 0 :(得分:0)

$subject = $_POST['subject'];
$text = $_POST['text'];

此外,没有名称和电子邮件的表单字段。加上那个。

答案 1 :(得分:0)

在您设置收件人电子邮件的部分中也存在错误 - 它们没有分开,因此$to变量为info@jamesreborne.co.ukdamgxx@gmail.com。我应该更像这样:

<?php
$to = 'info@jamesreborne.co.uk';
$to .= ', damgxx@gmail.com';

答案 2 :(得分:0)

首先你的$ to string以错误的方式添加两封电子邮件,  它应该是:

   $to = 'info@jamesreborne.co.uk, ';
   $to .= 'damgxx@gmail.com';

即使你纠正了,你也不会得到主题和信息价值。 AFAIK $ _POST是大小写的(如果错误请更正)。所以你必须把它变成$ _POST而不是$ _post。

然后html格式和php代码中的输入名称不匹配。他们应该是:

  $name = $_POST['name'];
  $email = $_POST['email'];
  $subject = $_POST['subject'];
  $text = $_POST['text'];

如果表单中的输入字段是主题,则

$subject = $_POST['subject'];

不是

$subject = $_POST['sender_subject'];

编辑:

如果您仍然没有收到电子邮件,那么您的服务器可能没有安装邮件服务器。 安装postfix并尝试。