使用phpmailer进行邮件发送,并实现忘记密码找加功能的代码,有需要的朋友,可以参考下。
实现如下功能:
1、根据邮件找回链接进入重置密码操作页面 。仅一周内、一次有效
2、重置密码 (也可以将密码发送直接登录)
1、生成邮件找回邮件
您好!
根据您于 [" . 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 递归调用,群发邮件
$value){
$this->AddMutieAddress($value);
}
}else{
$this->AddAddress($arrAddress);
}
}
?>
首先用得是gmail失败了 SMTPSecure=ssl。
phpmailer发送html样式丢失的解决:
不能用带路径的样式用
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 "邮件发送失败. ";
echo "错误原因: " . $mail->ErrorInfo;
exit;
}
echo "邮件发送成功";
?>
附,PHPMailer邮件发送类V5.1下载地址。 |