2013-05-04 174 views
0

我希望在我的網站上註冊的用戶在使用之前必須先激活其帳戶。問題是,我沒有收到任何電子郵件到我的電子郵件測試帳戶。註冊後發送電子郵件驗證

在我開始發佈代碼之前,問題可能是,我正在使用xampp在本地計算機上工作嗎?

否則,這裏是代碼片段

$random = substr(number_format(time() * rand(),0,'',''),0,10); 
    $insertMailVerify = $this->db->prepare("INSERT INTO mailverify (mailAddress, token, datetime) VALUES (:mailAddress, :token, :date)"); 
    $insertMailVerify->execute(array(':mailAddress'=>$emailAddress, 
            ':token'=>$random, 
            ':date'=>$date)); 

    $to = $emailAddress; 
    $subject = "Activating your Account"; 
    $body = "Hi, in order to activate your account please visit http://localhost/FinalYear/activation.php?email=".$emailAddress." and fill in the verification code $random"; 
    if(mail($to, $subject, $body)) 
    { 
     echo ("<p>Message success</p>"); 
    } 
    else { 
     echo ("<p>Message fail</p>"); 
    } 

以防萬一你想知道我是否$ EMAILADDRESS來自:這僅僅是一個代碼片段,我已經讓軟件回聲的電子郵件地址,這是正確的。它甚至會出現在「消息成功」的情況下,但我仍然無法收到任何電子郵件。可能是什麼問題呢?

+0

你想發送電子郵件?像Gmail一樣?如果是這樣,那麼你需要在你的php.ini上配置ISP配置 – 2013-05-04 10:22:54

+0

是的,它是gmail,你可以給我一個鏈接在哪裏做到這一點?真的會有幫助! – loomie 2013-05-04 10:24:24

回答

0

看來你的郵件服務器SMTP配置不正確....

檢查SMTP服務器地址的端口和IP。

0

試着改變你PHP.ini這樣的文件,並告訴我它是否工作。

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = smtp.gmail.com 

; http://php.net/smtp-port 
smtp_port = 465 //if 465 is not working then try 25 

如果這不起作用,那麼有很多關於如何實現你想要做的事的教程。 這裏是一個鏈接:Send email from localhost

0

有同樣的問題,但在Linux上。 1)假設你的mail()函數工作正常:問題可能在於,該電子郵件進入了垃圾郵件箱(因爲這些本地主機郵件系統通常被標記爲垃圾郵件,所以電子郵件服務正在保護電子郵件免受未經驗證的主機)。

2)如果郵件()不能正常工作,它的配置不正確,如果你遵循一些教程,並對其進行配置,這需要像5分鐘,你就會明白爲什麼不使用它:)

最好你的方式是使用一些免費或付費的smtp服務。非常簡單,快捷,您的電子郵件不會被標記爲垃圾郵件。並安裝PEAR庫發送電子郵件。這是一個例子。

$from = '[email protected]'; 
$to  = '[email protected]'; 
$subject = 'subject'; 
$body = 'Hello!'; 

$host = 'smtpserver.com'; 
$port = '25'; 
$username = 'yourlogin'; 
$password = 'yourpass'; 

$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); 
$smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); 

$mail = $smtp->send($to, $headers, $body); 

if(PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
} else { 
    echo("<p>Message successfully sent!</p>"); 
} 

要驗證碼:不是告訴用戶寫下驗證碼,更好地生成他聯繫,他點擊他的帳戶被激活。像

http://localhost/FinalYear/[email protected]&token=79054025255fb1a26e4bc422aef54eb4 

一些註冊頁面:生成激活頁面上的激活令牌就像md5($email . '_sometext');

if(md5($_GET['email'] . '_sometext') == $_GET['token']) { activate.. }

請注意,這只是一個例子,有10個方面,它如何能做到:)

5

提交表單後,您可以使用代碼或鏈接並將其發送給用戶電子郵件ID

$message = "Your Activation Code is ".$code.""; 
$to=$email; 
$subject="Activation Code For Talkerscode.com"; 
$from = 'your email'; 
$body='Your Activation Code is '.$code.' Please Click On This link <a href="verification.php">Verify.php?id='.$db_id.'&code='.$code.'</a>to activate your account.'; 
$headers = "From:".$from; 
mail($to,$subject,$body,$headers); 

echo "An Activation Code Is Sent To You Check You Emails"; 

從TalkersCode.com代碼什麼的地址完全教程訪問http://talkerscode.com/webtricks/account-verification-system-through-email-using-php.php

+0

請標記爲答案 – iJamesPHP 2016-03-16 07:59:19

相關問題