1

私のサイトに登録するユーザーは、使用する前にまずアカウントを有効にする必要があります。問題は、メール テスト アカウントにメールが届かないことです。

コードの投稿を開始する前に、現在 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 をどこから取得したのか疑問に思われる場合に備えて: これは単なるコード スニペットです。既にソフトウェアに電子メール アドレスをエコーさせており、正しいです。場合によっては「メッセージの成功」にも入りますが、それでもメールが届きません。何が問題なのですか?

4

5 に答える 5

6

フォームを送信した後、コードまたはリンクを使用して、ユーザーの電子メール 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をご覧ください。

于 2016-03-16T07:48:09.853 に答える
0

phpmailerローカルホストでは、gmailアカウントを使用するのが最善の方法だと思います

ここでチュートリアル: http://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/

于 2013-05-04T10:26:57.783 に答える
0

同じ問題がありましたが、Linux でした。

1) mail() 関数が正常に動作していると仮定します: 問題は、電子メールがスパム ボックスに入っている可能性があります (これらの localhost メール システムはスパムボットとしてマークされることが多く、電子メール サービスは検証されていないホストからの電子メールを保護しているため)。

2) mail() が機能していない場合、適切に構成されていません。チュートリアルに従って構成すると、5 分ほどかかるため、使用しない理由がわかります :)

最良の方法は、無料または有料の smtp サービスを使用することです。非常に簡単、迅速で、メールがスパムとしてマークされることはありません。そして、メールを送信するための PEAR ライブラリをインストールします。ここに例があります。

$from    = 'from@domain.com';
$to      = 'to@domain.com';
$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/activation.php?email=some@email.com&token=79054025255fb1a26e4bc422aef54eb4

登録ページで:次のようなアクティベーショントークンを生成しますmd5($email . '_sometext');

アクティベーションページでif(md5($_GET['email'] . '_sometext') == $_GET['token']) { activate.. }

これは一例に過ぎないことに注意してください。それを行う方法は 10 通りあります :)

于 2013-05-04T10:44:43.213 に答える