2012-03-10 79 views
0

我正在創建一個'忘記密碼'頁面,用戶輸入他們的電子郵件地址,腳本找到與該電子郵件關聯的密碼,並將其發送到存儲的電子郵件地址。警告:mail()[function.mail]:SMTP服務器響應:550無效收件人:

我相信問題與我的SMTP郵件服務器有關。我使用的WAMP沒有一個,所以我下載了一個免費的。

這是php腳本我使用:

$id = checkEmail($email); 
    $record = readMemberRecord($id); 
    $password = @mysql_result($record,0,'cred'); 

    if($password){ 
     $email_subject = "Email Request"; 
     $email_body = "Your password is ".$password."."; 
     $header = "NinjaMan"; 
     mail($email, $email_subject, $email_body,$header); 
     $msg = "Your password has been sent to ".$email."."; 
    }else{ 
     $msg = "Sorry, the email ".$email." wasn't found."; 
    } 

的$味精輸出正常,所以我知道代碼是通過郵件功能。

+0

如果錯誤信息「無效收件人」後面沒有電子郵件地址,我敢打賭,'$ email'變量是空的。 – 2012-03-10 16:44:44

+0

var_dump你的變量,看看他們是否你期望他們是第一。如果他們是那麼問題可能與您的SMTP配置,在這種情況下,你可能想在serverfault上發佈。 – j08691 2012-03-10 16:48:43

+0

它的'不空。第二個if語句中的$ msg變量正在輸出。它攜帶$ email變量並正確顯示。 「$ msg =」您的密碼已發送至「。$ email。」。「;」作品。 – 2012-03-10 17:02:13

回答

3

嘗試在$header發送在一個適當的「從」。

$emailFrom = "[email protected]"; // match this to the domain you are sending email from 
$email = "[email protected]"; 
$subject = "Email Request"; 
$headers = 'From:' . $emailFrom . "\r\n"; 
$headers .= "Reply-To: " . $email . "\r\n"; 
$headers .= "Return-path: " . $email; 
$message = "Your password is ".$password."."; 
mail($email, $subject, $message, $headers); 

查看​​的詳細信息。如果這不起作用,請嘗試使用PHPMailer。你可以在代碼中配置它,不需要編輯php.ini。

我已經在一些項目中使用過它(v 2.0.4,我看最新的是5.1)並且沒有問題。

+0

剛剛嘗試過。沒有工作。同樣的錯誤。 – 2012-03-10 17:44:55

+0

我犯了一個錯誤,並編輯了答案。發件人地址應該是您要發送電子郵件的地址。 – talereader 2012-03-10 18:42:56

+0

好吧,我明白了。 那麼,我發現了一些可行的方法。 首先,我下載了phpMailer類,並將其包含在腳本中,如下所示:require_once(「PHPMailer_5.2.1/class.phpmailer.php」); 接下來,我刪除了我正在使用的另一個SMTP,並下載了一個名爲PostCaster的另一個SMTP。 在設置過程中,它試圖讓SMTP的東西成爲我電腦的名字。我在安裝到'localhost'之後才更改它。 最後,我跑了腳本。電子郵件進入postcaster後,我在施放後施法器中擊中「發送」。 – 2012-03-10 18:57:51

0

嘗試使用谷歌的服務器來發送郵件,你可以看到如何做到這一點here

+1

我會嘗試,如果xamp在我的電腦上工作。我得到一個錯誤,說有關某個事件的實例已經在運行,並且端口88不可訪問或類似的東西。所以我轉向了WAMP。 – 2012-03-10 17:42:42

0

嘗試使用此

//Email information 
$to = "[email protected]"; 
$subject = "Test mail"; 
$message = "Hello! This is a test email message."; 
$from = "[email protected]"; 
$headers = "From:" . $from; 

$mail=mail($to,$subject,$message,$headers); 
if($mail) { 
    echo "Thanks for mail"; 
} else { 
    echo "Mail not Sent"; 
} 

//Email response 
echo "Thank you for contacting us!"; 
相關問題