热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Thinkphp3.2版本使用163邮箱发(验证码)邮件

今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文。--------------------------------------------

今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文。

------------------------------------------------------------------------------------------------------------------------------------------------------------

1、准备工作

(1)下载PHPMailer,插件,下载地址:链接:http://pan.baidu.com/s/1hskrDqs 密码:dcs9

(2)将下载好的文件加压,放在thinkphp扩展库内(个人存放路径:根目录\ThinkPHP\Library\Vendor\PHPMailer)

2、代码拼写

(1)在根目录\项目目录\Common\conf\config.php内,加入以下代码;

// 配置邮件发送服务器
'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称
'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
'MAIL_USERNAME' =>'99999999@163.com',//发件人的邮箱名
'MAIL_PASSWORD' =>'9999999',//163邮箱发件人授权密码
'MAIL_FROM' =>'9999999@163.com',//发件人邮箱地址
'MAIL_FROMNAME'=>'某某名',//发件人姓名
'MAIL_CHARSET' =>'utf-8',//设置邮件编码
'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件

注释:以下参数

    发件人的邮箱名,

    163邮箱发件人授权密码,

    发件人邮箱地址,

    发件人姓名

请自行更改(附163邮箱发件人授权密码获取方式)。

(2)在根目录\项目目录\Common\Common内,新建function.php文件,并加入以下代码;

php
/*
* 发送邮件
* @param $to string
* @param $title string
* @param $content string
* @return bool
*
*/
function sendMail($to, $title, $content) {
Vendor(
'PHPMailer.PHPMailerAutoload');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
$mail->Username = C('MAIL_USERNAME'); //发件人邮箱名
$mail->Password = C('MAIL_PASSWORD') ; //163邮箱发件人授权密码
$mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
$mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
$mail->AddAddress($to,"尊敬的客户");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
$mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
$mail->Subject =$title; //邮件主题
$mail->Body = $content; //邮件内容
$mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
return($mail->Send());
}

(3)本人使用的是ajax发送验证码,以下为html代码;




class="hr15">

发送验证码

class="hr15">


class="hr15">


class="hr15">


class="hr20">
登录


(4)以下为php代码;

//发送邮件验证码
public function send(){
if(IS_AJAX){
//接收账号信息
$data['name'] = I('get.forget_name');
if(!$data['name']) $this->ajaxReturn("请填写登录账号",0);
//接收邮箱
$data['email'] = I('get.forget_email');
if(!$data['email']) $this->ajaxReturn("请填写邮箱账号",0);
//验证邮箱格式
$pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
if(preg_match( $pattern, $data['email'])){
//邮箱格式正确下,判断用户是否存在
$Manager = D('Manager');
$condition['display'] = 1;
$condition['name'] = $data['name'];
$condition['status'] > 1;
$ManagerInfo = $Manager->where($condition)->find();
if($ManagerInfo){
//核对用户账号与邮箱是否一致
if($ManagerInfo['email'] == $data['email']){
//设置参数
$title = "邮箱验证"; //邮件标题
$font = "此邮件为找回密码验证邮件,请勿回复,您的验证码为"; //邮件内容
$code = rand(1000,9999); //随机码
$content = $font.$code; //拼接
if(SendMail($data['email'],$title,$content)) {
//存验证码
$Condition['code'] = $code;
$Condition['updatetime'] = time();
$Cond['name'] = $data['name'];
$ManagerSave = $Manager->where($Cond)->save($Condition);
if($ManagerSave){
$this->ajaxReturn("发送成功",0);
}
else{
$this->ajaxReturn("验证码保存失败",0);
}
}
else{
$this->ajaxReturn("发送失败",0);
}
}
else{
$this->ajaxReturn("请核对用户信息的正确性",0);
}
}
else{
$this->ajaxReturn("请核对用户信息",0);
}
}
else{
$this->ajaxReturn("请核对邮箱信息",0);
}
}
else{
$this->ajaxReturn(0);
}
}

(5)QQ邮箱验证码接收情况;

 


推荐阅读
  • 本文给大家介绍一个不错的需要登录的php文件上传管理系统,功能简单有需要了解的同学可参考。代码如下<?php$admin_pwadmin;管理密码$uploaddirupload;上传目录session_s ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • Spring框架下发送嵌入图片邮件时遇到的技术挑战与解决方案
    在Spring框架中发送嵌入图片的HTML格式邮件时,常遇到技术挑战。一种有效的解决方案是在邮件内容中直接使用``标签来引用图片。此外,还可以通过MimeMessageHelper类的addInline方法将图片作为内联资源添加到邮件中,确保图片能够正确显示。这种方法不仅提高了邮件的可读性,还增强了用户体验。 ... [详细]
  • php从哪里得到框架(2023年最新分享)
    导读:本篇文章编程笔记来给大家介绍有关php从哪里得到框架的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、如何用PHP制 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 如何在PHP中获取数组中特定元素的索引位置
    在PHP中获取数组中特定元素的索引位置有多种方法。首先,可以使用 `array_search()` 函数,其语法为 `array_search(目标值, $array)`,该函数将返回匹配元素的第一个键名(即下标)。其次,也可以利用 `array_keys()` 函数,通过 `array_keys($array, 目标值)` 语法来获取所有匹配元素的键名列表。这两种方法都能有效解决数组元素定位的问题,具体选择取决于实际需求和性能考虑。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • thinkphp5.0 验证码的使用
    对应手册:点击查询如果不使用默认的规则,想自定义配置一下呢就新增个配置项:默认是5位数,带混淆线条,这里增加个配置项修改一下 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了thinkphpurl生成相关的知识,希望对你有一定的参考价值。为了配合所使用的URL模式,我们需要能够动态的根据当前 ... [详细]
  • 本文目录一览:1、php月薪多少合适2、php ... [详细]
author-avatar
玉临风居士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有