2013-06-05 88 views
1

只是一點點的幫助,這個PHP電子郵件表格,我已經檢查了這裏的其他問題,但沒有找到解決辦法。PHP電子郵件訂閱表單 - 不發送郵件 - 已檢查php.ini設置?

我在我的網頁上有一個非常簡單的PHP電子郵件訂閱表單,但它不發送郵件。認爲這可能是我的php.ini的問題,但一切似乎都很好。只是想讓別人看看這裏的代碼,看看我是不是愚蠢!

<?php 
$email_to = "[email protected]"; 
$success_message = "Thank you for subscribing to Roomsby.com. We will get back to you with details of our launch very soon!"; 
$site_name = "www.roomsby.com"; 

$email = trim($_POST['email']); 
$submitted = $_POST['submitted']; 

if(isset($submitted)){ 
    if($email === '' || $email === 'Enter your email address') { 
     $email_empty = true; 
     $error = true; 
    } elseif (!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/i", $email)){ 
     $email_unvalid = true; 
     $error = true; 
    } 
} 

if(isset($error)){ 
     echo '<span class="error_notice"><ul>'; 
     if($email_empty){ 
      echo '<li>Please enter your email address</li>'; 
     } elseif ($email_unvalid) { 
      echo '<li>Please enter a valid email address</li>'; 
     } else { 
      echo '<li>An error has occurred while sending your message. Please try again later.</li>'; 
     } 
     echo "</ul></span>"; 
} 

if(!isset($error)){ 
     $subject = 'Newsletter Submission'; 
     $body = "Email: $email"; 
     $headers = 'From: ' . $site_name . ' <' . $emailTo . '> ' . "\r\n"; 
     $headers .= 'Reply-To: ' . $email; 
     mail($email_to, $subject, $body, $headers); 

     echo '<span class="success_notice">' . $success_message . '</span>'; 
    } 
?> 
+0

請發表你得到 – 2013-06-05 10:29:07

+0

我沒有得到任何錯誤的錯誤,形式不發送電子郵件 –

+0

你在現場服務器或本地服務器。它不適用於後者。 – yoeriboven

回答

1

isset()將返回True只要變量不是NULL,這意味着即使當變量是Falseisset()將返回True

因此,考慮到這一點 - 試試這個版本:

$error = FALSE; # assume no errors. 

if(isset($submitted)){ 
    if($email === '' || $email === 'Enter your email address') { 
     $email_empty = true; 
     $error = TRUE; 
    } elseif (!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/i", $email)){ 
     $email_unvalid = true; 
     $error = true; 
    } 
} 

if ($error) { 

    echo '<span class="error_notice"><ul>'; 
     if($email_empty){ 
      echo '<li>Please enter your email address</li>'; 
     } elseif ($email_unvalid) { 
      echo '<li>Please enter a valid email address</li>'; 
     } else { 
      echo '<li>An error has occurred while sending your message. Please try again later.</li>'; 
     } 
     echo "</ul></span>"; 
} else { 

     $subject = 'Newsletter Submission'; 
     $body = "Email: $email"; 
     $headers = 'From: ' . $site_name . ' <' . $emailTo . '> ' . "\r\n"; 
     $headers .= 'Reply-To: ' . $email; 
     mail($email_to, $subject, $body, $headers); 

     echo '<span class="success_notice">' . $success_message . '</span>'; 
} 
+0

感謝您的提示,下次我一定會記住! 但是仍然沒有發送任何電子郵件,我認爲它一定是php.ini設置。 –

+0

不再有想法,這仍然不起作用! –