Heim >Backend-Entwicklung >PHP-Tutorial >phpmailer发送邮件及实现密码找回功能的代码

phpmailer发送邮件及实现密码找回功能的代码

WBOY
WBOYOriginal
2016-07-25 08:59:541338Durchsuche
使用phpmailer进行邮件发送,并实现忘记密码找加功能的代码,有需要的朋友,可以参考下。

实现如下功能: 1、根据邮件找回链接进入重置密码操作页面 。仅一周内、一次有效 2、重置密码 (也可以将密码发送直接登录)

1、生成邮件找回邮件

<?php      
    $subject = " 重设密码(请勿回复此邮件)";  
    $auth = authcode($use_id . $account . $email, 'ENCODE', 'safeEmail', 3600 * 24 * 7);  
      
    $url = "http://" . $_SERVER["HTTP_HOST"] . "/Main.php?do=userManage&method=ResetPass&u=" . $use_id . "&auth=" . $auth;  
    $body = " 尊敬的用户: <br>  
    您好!<br>  
    根据您于 [" . date('Y-m-d H:m:s') . "] 提交的请求,本邮件将引导您重新设置 [" . $account . "] 的帐号密码。  
    如果您确认本次“重新设置密码”的请求是您自己提交的,请点这里完成重设操作(本链接仅一周内、一次有效 )。  
    如果上面的链接无法点击,您也可以复制以下链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开重设机密问题页面设置新的机密问题和答案:  
    {$url}  
    如果您在以上时间点没有提交过“重新设置密码”的请求,则有可能是您机密问题的答案已经泄露,有恶意用户正在试图窃取您的帐号!";  
    sendMail($subject, $body, $address);  
      
    function sendMail($subject, $body, $address) {  
        $mail = new PHPMailer();  
      
        $mail->CharSet ='utf-8';  
        $mail->IsHTML(true);   // 设置邮件格式为 HTML   
        $mail->IsSendmail(); //使用LINUX SENDMAIL发送邮件  
      
        $mail->Host = WEB_SITE_HOST; // specify main and backup server  
        $mail->SMTPAuth = true;                // 设置为安全验证方式  
        $mail->SetLanguage('en',PATH_CLASS.'/phpmailer/language/');  
        $mail->From = MAIL_SENDER;  
        $mail->FromName = "service";  
        $mail->AddAddress($address);     //收件人地址  
        $mail->WordWrap = 50;                 // set word wrap to 50 characters              
        $mail->Subject = $subject;  
        $mail->Body = daddslashes($body, 1);  
          
        $result = $mail->Send();  
        if (!$result) {  
            echo $mail->ErrorInfo;  
        }  
        $mail->SmtpClose();   
      
        return $result;  
    }  

   //邮件链接有效性检查
    function ResetPass($mapping, $form, &$request, &$response) {  
        $use_id = $request->getParameter('u');  
      
        $user = $this->delegate->getUserInfo_ById($use_id);  
        $o_mail = $user['email'];  
        $o_account = $user['account'];  
      
        $auth = $request->getParameter('auth');  
        $auth = authcode($auth, 'DECODE', 'safeEmail');  
        $n_auth = $use_id . $o_account . $o_mail;  
        $a = false;  
        if ($n_auth == $auth) {  
            $a = true;  
        }  
        $form->setEditUser($user);  
        if ($a) { //有效  
            return $mapping->findForwardConfig('resetpwd');  
        }  
    }  
?>

class.phpmailer.php line 332 递归调用,群发邮件

<?php
    public function AddMutieAddress($arrAddress){  
        if (is_array($arrAddress)){  
            foreach($arrAddress as $key=>$value){  
                $this->AddMutieAddress($value);  
            }  
        }else{  
            $this->AddAddress($arrAddress);  
        }  
    }  
?>

首先用得是gmail失败了 SMTPSecure=ssl。 phpmailer发送html样式丢失的解决: 不能用带路径的样式

<?php  
    require("class.phpmailer.php");  
    $mail = new PHPMailer(); //建立邮件发送类  
    $address = "mail1@jbxue.com";  
    $mail->IsSMTP(); // 使用SMTP方式发送  
    $mail->Host = "smtp.qq.com"; // 发送邮件服务器  
    $mail->SMTPAuth = true; // 启用SMTP验证功能  
    $mail->Username = "mail2@qq.com"; // 用户名(请填写完整的email地址)  
    $mail->Password = "***********"; // 密码  
    $mail->Port = 25;  
    $mail->From = "mail2@qq.com"; //邮件发送者email地址  
    $mail->FromName = "liuyoubin";  
    //$mail->SMTPSecure = "ssl"; // 安全协议tls  
    $mail->AddAddress("$address", "a"); //收件人地址,格式是AddAddress("收件人email","收件人姓名")  
    //$mail->AddReplyTo("", "");  
      
    //$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件  
    //$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式  
      
    $mail->Subject = "PHPMailer测试邮件"; //邮件标题  
    $mail->Body = "Hello,这是测试邮件"; //邮件内容  
    $mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略  
      
    if (!$mail->Send()) {  
        echo "邮件发送失败. <p>";  
        echo "错误原因: " . $mail->ErrorInfo;  
        exit;  
    }  
      
    echo "邮件发送成功";  
?>
附,PHPMailer邮件发送类V5.1下载地址。


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn