PHP 通过邮件找回密码源码

  Thinkphp 发送邮件找回密码源码

  public function verify()
    {
        $type     =     isset($_GET['type'])?$_GET['type']:'gif';
        import("@.ORG.Image");
        Image::buildImageVerify(4,1,$type);
    }
    
    public function reset()
    {
        $username = $_GET['username'];
        $key = $_GET['key'];
        if(S($username) == $key)
        {
            $_SESSION[C('USER_NAME')] = $username;
            //可以修改密码了跳转
        }
        else
        {
            showMsg('此重置密码链接无效,请确认后在试!','/');
        }
    }
    
    public function getpasswd()
    {
        
        if(md5($_POST['verify'])    != $_SESSION['verify']) {
            showMsg('验证码错误!');
        }

        $username = dhtml($_POST['name']);
        $email = $_POST['email'];
        $model = M('Clubber');
        $map['user_name'] = $username;
        $clubber = $model->where($map)->find();
        if($clubber)
        {
            if($clubber['user_email'] == $email) 
            {
                import("ORG.Net.Smtp");
                $host = $_SERVER['HTTP_HOST'];
                $key = md5(time());
                $reset_url = "http://$host/index.php/Rpwd/reset/username/$username/key/$key";
                $mail_body = "请点击以下链接重置密码,以便激活您的账号:<a href='$reset_url'>$reset_url</a>";
                $smtp = new smtp(C('MAIL_SMTP'),25,true,C('MAIL_USER'),C('MALL_PWD'),C('MAIL_USER'));
                $smtp->debug = true;
                if($smtp->sendmail($email, C('MAIL_USER'), '好开始','好开始-重置密码',$mail_body,'HTML'))
                {
                    S($username,$key);
                    $this->display('success');
                }
                else 
                {
                    showMsg('服务器繁忙,请稍侯在试!');
                }
            }
            else 
            {
                showMsg('请重新输入邮箱,邮箱不正确!');
            }
        }
        else
        {
            showMsg('此用户不存在!');
        }

    }


原文:http://www.qingruxu.com/code/php/504.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的PHP脚本,可以使用SMTP协议批量发送邮件: ```php <?php // 邮件发送函数 function sendMail($to, $subject, $body) { $host = 'smtp.example.com'; // SMTP服务器地址 $username = 'your_username'; // SMTP用户名 $password = 'your_password'; // SMTP密码 $headers = array( 'From' => 'your_email@example.com', 'To' => $to, 'Subject' => $subject, 'Content-Type' => 'text/html; charset=UTF-8' ); $smtp = new SMTP($host, 25); // 创建SMTP对象 $smtp->setAuth($username, $password); // 设置SMTP认证信息 $smtp->setHeaders($headers); // 设置邮件头 $smtp->setBody($body); // 设置邮件内容 return $smtp->send(); // 发送邮件 } // 要发送的邮件列表 $emails = array('email1@example.com', 'email2@example.com', 'email3@example.com'); // 发送邮件的循环 foreach ($emails as $email) { $result = sendMail($email, '邮件主题', '邮件内容'); if ($result) { echo '邮件发送成功:' . $email . '<br>'; } else { echo '邮件发送失败:' . $email . '<br>'; } } ?> ``` 这个脚本使用了一个名为SMTP的自定义类,需要先定义这个类。以下是SMTP类的代码: ```php class SMTP { private $host; // SMTP服务器地址 private $port; // SMTP服务器端口 private $username; // SMTP用户名 private $password; // SMTP密码 private $headers; // 邮件头 private $body; // 邮件内容 public function __construct($host, $port) { $this->host = $host; $this->port = $port; } public function setAuth($username, $password) { $this->username = $username; $this->password = $password; } public function setHeaders($headers) { $this->headers = $headers; } public function setBody($body) { $this->body = $body; } public function send() { $socket = fsockopen($this->host, $this->port, $errno, $errstr); if (!$socket) { return false; } // 建立连接 $response = fgets($socket); if (substr($response, 0, 3) != '220') { return false; } fputs($socket, "EHLO " . $this->host . "\r\n"); while ($response = fgets($socket)) { if (substr($response, 3, 1) != '-') { break; } } if (substr($response, 0, 3) != '250') { return false; } // 身份认证 fputs($socket, "AUTH LOGIN\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '334') { return false; } fputs($socket, base64_encode($this->username) . "\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '334') { return false; } fputs($socket, base64_encode($this->password) . "\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '235') { return false; } // 设置邮件头和内容 $headers = ''; foreach ($this->headers as $key => $value) { $headers .= $key . ': ' . $value . "\r\n"; } $headers .= "\r\n" . $this->body . "\r\n"; // 发送邮件 fputs($socket, "MAIL FROM: <" . $this->headers['From'] . ">\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '250') { return false; } fputs($socket, "RCPT TO: <" . $this->headers['To'] . ">\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '250') { return false; } fputs($socket, "DATA\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '354') { return false; } fputs($socket, $headers . "\r\n.\r\n"); $response = fgets($socket); if (substr($response, 0, 3) != '250') { return false; } // 关闭连接 fputs($socket, "QUIT\r\n"); fclose($socket); return true; } } ``` 请注意,这个脚本只是一个例子,需要根据实际情况进行修改和调整。特别是SMTP服务器的设置,需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值