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

看来您的邮件服务器SMTP配置不正确....

检查 SMTP 服务器地址的端口和 IP。

于 2013-05-04T10:34:20.980 回答
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

如果这不起作用,那么有很多关于如何实现您想要做的事情的教程。这是一个链接:从本地主机发送电子邮件

于 2013-05-04T10:34:30.017 回答
0

有同样的问题,但在linux上。

1) 假设您的 mail() 函数工作正常:问题可能是,电子邮件进入垃圾邮件箱(因为这些本地主机邮件系统通常被标记为垃圾邮件机器人,因此电子邮件服务正在保护电子邮件免受未经验证的主机的攻击)。

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 回答
0

在本地主机中,我认为最好的方法是使用phpmailergmail帐户

这里的教程:http ://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/

于 2013-05-04T10:26:57.783 回答