2012-11-21 98 views
0

我在网站上使用联系表格,它不发送电子邮件,请任何人都可以告诉我这个代码是错误的?
此表单是从另一个工作的网站复制的,所以我无法理解它失败的位置。我检查过语法,一切似乎都没问题。简单的PHP联系表格:提交按钮不发送电子邮件

<?php 
/* 
Template Name: Contact Page 
*/ 

get_header(); 


$contact_show = true; 

//If the form is submitted 
if(isset($_POST['submit'])) { 

//Check to make sure that the name field is not empty 
if(trim($_POST['contactname']) == '') { 
    $hasError = true; 
} else { 
    $name = trim($_POST['contactname']); 
} 
//Check to make sure that the subject field is not empty 
if(trim($_POST['subject']) == '') { 
    $hasError = true; 
} else { 
    $subject = trim($_POST['subject']); 
} 

//Check to make sure sure that a valid email address is submitted 
if(trim($_POST['email']) == '') { 
    $hasError = true; 
} else if (!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/i",  trim($_POST['email']))) { 
    $hasError = true; 
} else { 
    $email = trim($_POST['email']); 
} 

//Check to make sure comments were entered 
if(trim($_POST['message']) == '') { 
    $hasError = true; 
} else { 
    if(function_exists('stripslashes')) { 
     $comments = stripslashes(trim($_POST['message'])); 
    } else { 
     $comments = trim($_POST['message']); 
    } 
} 

//If there is no error, send the email 
if(!isset($hasError)) { 
    $contact_show = false; 
    $emailTo = get_option('of_email_address'); 
    $body = "Name: $name \r\nEmail: $email \r\nSubject: $subject \r\nComments:\r\n $comments";   
    $headers = 'From: <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email; 

    mail($emailTo, $subject, $body, $headers); 
    $emailSent = true; 
} 
} 
?> 
<div id="top"> 
<h1><?php the_title(); ?></h1> 
</div> 
</div> 
<div id="main_content"> 
<div id="contact"> 
<?php while (have_posts()) : the_post(); ?> 
<?php endwhile; // end of the loop. ?> 
<?php if ($contact_show == true) { ?> 
<?php } ?> 


     <?php if(isset($hasError)) { //If errors are found ?> 
      <div class="redbox"> 
       <p><?php _e('Please check if you\'ve filled all the fields with valid information. Thank you.') ?></p> 
      </div> 
     <?php } ?> 

     <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?> 
      <div class="greenbox"> 
       <p> 
        <?php _e('Your message has been sent!') ?><br /> 
        <?php echo $name; _e(' thank you for emailing us! We will get in touch with you soon.'); ?> 
       </p> 
      </div> 
     <?php } ?> 
     <form action="" method="post" id="contactForm"><!-- start contact form --> 
      <fieldset class="contact-fieldset"> 
       <ul> 
        <li> 
         <label for="contactname"><?php _e('Name:') ?></label> 
         <input type="text" name="contactname" id="name" class="contact-input requiredContact" /> 
        </li> 
        <li> 
         <label for="email"><?php _e('Email:') ?></label> 
         <input type="text" id="email" name="email" class="contact-input  requiredContact cEmail" /> 
        </li>  
        <li> 
         <label for="subject"><?php _e('Subject:') ?></label> 
         <input type="text" name="subject" id="subject" class="contact-input requiredContact" /> 
        </li> 
        <li> 
         <label for="message"><?php _e('Message:') ?></label> 
         <textarea rows="6" style="overflow: hidden;" cols="40" id="message" name="message" class="contact-textarea 

requiredContact"></textarea> 
        </li> 
        <li> 
         <input type="submit" value="<?php _e('send message'); ?>"  name="submit" class="contact-submit" 

/> 
        </li>      
       </ul> 
      </fieldset> 
     </form></div> 



</div> 
+0

是否有错误? 'mail()'返回什么?如果它在别处工作,那么它可能是服务器邮件配置。 – MrCode

回答

0

如果从其他网站,没有工作coppied它,那么就表明该PHP代码的作品,它是其实你的服务器设置是错误的,因为那是你已经改变了(而不是PHP代码,如果它以前工作,我假设显示没有错误)。确保这些设置正确:

http://php.net/manual/en/mail.configuration.php

0

我检查你的代码,因为没有任何错误和不工作的原因是函数调用的可能。

在您的编码中存在几个函数调用。检查所有功能是否存在,以及该功能是否存在错误。

0

再一次,PHP看起来不错;检查你的php.ini文件,并确保邮件功能被配置为为PHP提供一个sendmail或SMTP连接的路径;另外,请确保您的防火墙设置不阻止端口25(或您的配置的SMTP中继端口)

相关问题