2011-02-23 82 views
0

這是到目前爲止我的代碼PHP的郵件功能問題

function send_email() { 

$email = $_POST['signup-email']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 

$to = "[email protected]"; 
$subject = "Email from 
RateMyLife.com"; $body = "Hi ,$firstname $lastname, this is an email from RateMyLife.com"; $headers = "From:[email protected]"; 

mail($to, $subject, $body, $headers); 

exit(); 

} 

$existingSignup = mysql_query("SELECT * FROM signups WHERE signup_email_address='$email'"); 
if(mysql_num_rows($existingSignup) < 1){ 
    $date = date('Y-m-d'); 
    $time = date('H:i:s'); 
    $password = md5($passwd); 
    $insertSignup = mysql_query("INSERT INTO signups (signup_email_address, signup_date, signup_time, firstname, lastname, password, year, day, month, gender) VALUES ('$email','$date','$time','$firstname', '$lastname', '$password', '$year', '$day', '$month', '$gender')"); 
    if($insertSignup){ //if insert is successful 
     send_email(); 
    } 

電子郵件不是送......

感謝我無法弄清楚是什麼問題。

+0

做到這一點工作?在一個沒有別的文件中:mail('your_email_address','test','test'); – 2011-02-23 19:05:32

+0

你是否收到任何錯誤消息? – drudge 2011-02-23 19:06:10

+0

我建議你使用[PHPMailer類](http://phpmailer.worxware.com/)或任何其他選項來代替簡單的'mail()'函數。 – 2011-02-23 19:53:04

回答

2

可能有多種原因......你在Windows或Linux服務器上?

檢查phpinfo以查看sendmail是否正確配置(sendmail_path)。

如果配置正確,檢查爲什麼沒有在您的SMTP服務器日誌消息發送電子郵件,請在此瞭解更多詳情:http://pt.php.net/manual/en/function.mail.php#101588

如果你沒有sendmail的配置正確,你仍然可以使用您在某個SMTP服務器中發送您的電子郵件的帳戶。對於您應該使用PHP LIB以方便您的工作,例如,檢查: http://swiftmailer.org/

而且,測試這個PHP代碼向自己發送電子郵件,看看它的工作原理:

mail('[email protected]', 'My Subject', 'test message'); 
+0

不知道有關swiftmailer。來自Fabien Potencier(Symfony框架背後的人)一定很好。感謝@AlfaTeK的評論 – 2011-02-23 19:56:54

0

你檢查過你的兩個查詢是否成功了嗎?

$existingSignup = mysql_query(...) or die(mysql_error()); 
$insertSignup = mysql_query(...) or die(mysql_error()); 

如果其中一個失敗,則返回布爾值FALSE。如果第一次失敗,那麼mysql_num_rows()將失敗,因爲它期望一個mysql結果句柄,而不是布爾值。如果第二個失敗,那麼$ insertSignup將是錯誤的,並且您的if()將永遠不會觸發。