php 忘记密码发邮件,报错:Mailer Error: SMTP connect() failed in php mailer( https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)
61662017-08-27 23:04:00返回列表
用户登陆时忘记密码,常用的找回密码的方式有两种,一种是通过发送短信验证码,另一种是通过发送连接到邮箱,打开连接通过验证后跳转到重置密码界面。
用户登陆时忘记密码,常用的找回密码的方式有两种,一种是通过发送短信验证码,另一种是通过发送连接到邮箱,打开连接通过验证后跳转到重置密码界面。
创建一个修改密码的URL,例如:
$secretkey = "自己定义一个密钥"; $time = time(); $token = md5(用户ID.用户邮箱.$time.$secretkey); $string = "email=".$email."&time=".$time."&token=".$token; $sendstr = base64_encode($string); $url = "http://".自己的域名."/reset_password.php?sendstr = ".$sendstr; $send_result = sendmail($email,$time,$url); if($send_result == true){ return "邮件发送成功"; }else{ return "邮件发送失败"; }
邮件发送函数:
/** * 发送邮件 */ public function sendmail($email,$time,$url) { import("app.lib.PHPMailer.PHPMailerAutoload", null, '.php'); $mail = new \PHPMailer(); $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'test@gmail.com'; // SMTP username请输入自己的邮箱 $mail->Password = 'test'; // SMTP password请输入邮箱密码 $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->CharSet = 'UTF-8'; $mail->setFrom('test@gmail.com','test'); $mail->addAddress($email); // Add a recipient添加收件人邮箱 $mail->isHTML(true); // Set email format to HTML $mail->Subject = "找回密码"; $mail->Body = "亲爱的".$email.":<br/>您在".date("Y-m-d H:i:s",$time)."提交了找回密码请求。请点击下面的链接重置密码 (链接24小时内有效)。<br/><a href='".$url."'target='_blank'>".$url."</a>"; if(!$mail->send()) { return false; } else { return true; } return false; }
在发送过程中总是提示发送失败:
Mailer Error: SMTP connect() failed in php mailer( https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)
找了半天不知道问题在哪,后来发现原来原因在此:
Google开始为其用户使用新的授权机制,你只要登录您的谷歌帐户,打开下面的地址:
https://www.google.com/settings/security/lesssecureapps
然后点击启用。这样这个错误就会消失啦。