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

发布时间:2020-11-26编辑:脚本学堂
使用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 . "] 的帐号密码。  
    如果您确认本次“重新设置密码”的请求是您自己提交的,<a href='" . $url . "'>请点这里完成重设操作</a>(本链接仅一周内、一次有效 )。  
    如果上面的链接无法点击,您也可以复制以下链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开重设机密问题页面设置新的机密问题和答案:  
    {$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样式丢失的解决:
不能用带路径的样式<link href="style/style.css" rel="stylesheet" type="text/css" />用<style><style>来定义的
直接在表格里面定义样式发送就正常了<td style="padding-top:20px;padding-left:12px;padding-bottom:10px;">把对应的class换成style代码

<?php  
    require("class.phpmailer.php");  
    $mail = new PHPMailer(); //建立邮件发送类  
    $address = "mail1@jb200.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下载地址

您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子