ThinkPHP框架实现的邮箱激活功能示例


Posted in PHP onJune 15, 2018

本文实例讲述了ThinkPHP框架实现的邮箱激活功能。分享给大家供大家参考,具体如下:

配置框架采用ThinkPHP3.1框架,如下所示:

配置过程图:

ThinkPHP框架实现的邮箱激活功能示例

1.修改配置如下:

<?php
return array(
  //'配置项'=>'配置值'
    'MAIL_ADDRESS'=>'shcg666@sohu.com', // 邮箱地址
    'MAIL_SMTP'=>'smtp.sohu.com', // 邮箱SMTP服务器
    'MAIL_LOGINNAME'=>'shcg666@sohu.com', // 邮箱登录帐号
    'MAIL_PASSWORD'=>'******', // 邮箱密码
);

2.在功能里面增加一个类

<?php
class EmailAction extends Action{
  /*
  * microtime() 函数返回当前 Unix 时间戳和微秒数。
  * mt_srand() 播种 Mersenne Twister 随机数生成器。从 PHP 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。
  * 注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。
  * pow — 指数表达式
  */
  //random()这个函数是我用来生成一个随机数的,$numeric = 0生成一个6位的大小写字母与数字混合的字符串。$numeric = 1生成一个6位数字的字符串
  public function random($length = 6 , $numeric = 0) {
  PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
  if($numeric) {
    $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
  } else {
    $hash = '';
    $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++) {
      $hash .= $chars[mt_rand(0, $max)];
    }
  }
  return $hash;
  }
  //发送邮件的方法
  public function index(){
    //生成6位激活码
    $random = $this->random(6,0);
    //获取本网站的域名,域名在config里面配置下.
    //例如'domain' => 'http://write.blog.csdn.net',
    $domain = C('domain');
    //生成激活码模块地址
    $url = $domain.U("Home/Email/activate")."/?yam=$random";
    //将邮件地址和随机数放入session
    session("shcg666@sohu.com","$random");
    //发送邮件
    SendMail("shcg666@sohu.com","这是邮件标题","将此网址复制到浏览框$url");
  }
}
function SendMail($address,$title,$message){
  //引入文件
  vendor('PHPMailer.class#PHPMailer');
  require("phpmailer/class.phpmailer.php");
  require("phpmailer/class.smtp.php");
  //实例化邮件类
  $mail=new PHPMailer();
  // 设置PHPMailer使用SMTP服务器发送Email
  $mail->IsSMTP();
  // 设置邮件的字符编码,若不指定,则为'UTF-8'
  $mail->CharSet='UTF-8';
  // 添加收件人地址,可以多次使用来添加多个收件人
  $mail->AddAddress($address);
  // 设置邮件正文
  $mail->Body=$message;
  // 设置邮件头的From字段。//发件人
  $mail->From=C('MAIL_ADDRESS');
  // 设置发件人名字
  $mail->FromName='LilyRecruit';
  // 设置邮件标题
  $mail->Subject=$title;
  // 设置SMTP服务器。
  $mail->Host=C('MAIL_SMTP');
  // 设置为"需要验证"
  $mail->SMTPAuth=true;
  // 设置用户名和密码。
  $mail->Username=C('MAIL_LOGINNAME');
  $mail->Password=C('MAIL_PASSWORD');
  // 发送邮件。
  return($mail->Send());
}

3.导入的文件

在网上下载PHPMailer包将class.smtp.php和class.phpmailer.php无需任何改动,直接复制进来即可。

class.smtp.php文件点击此处本站下载

class.phpmailer.php文件完整实例代码点击此处本站下载

配置完成,具体的处理方式需要进一步改动。

4.常见邮件服务器(接收服务器和发送邮件服务器)地址

腾讯QQ邮箱
接收服务器:pop.qq.com
发送服务器:smtp.qq.com

网易126邮箱
接收服务器:pop3.126.com
发送服务器:smtp.126.com

网易163免费邮
接收服务器:pop.163.com
发送服务器:smtp.163.com

网易163VIP邮箱
接收服务器:pop.vip.163.com
发送服务器:smtp.vip.163.com

网易188财富邮
接收服务器:pop.188.com
发送服务器:smtp.188.com

网易yeah.net邮箱
接收服务器:pop.yeah.net
发送服务器:smtp.yeah.net

网易netease.com邮箱
接收服务器:pop.netease.com
发送服务器:smtp.netease.com

新浪收费邮箱
接收服务器:pop3.vip.sina.com
发送服务器:smtp.vip.sina.com

新浪免费邮箱
接收服务器:pop3.sina.com.cn
发送服务器:smtp.sina.com.cn

搜狐邮箱
接收服务器:pop3.sohu.com
发送服务器:smtp.sohu.com

21cn快感邮
接收服务器:vip.21cn.com
发送服务器:vip.21cn.com

21cn经济邮
接收服务器:pop.163.com
发送服务器:smtp.163.com

tom邮箱
接收服务器:pop.tom.com
发送服务器:smtp.tom.com

263邮箱
接收服务器:263.net
发送服务器:smtp.263.net

网易163.com邮箱
接收服务器:rwypop.china.com
发送服务器:rwypop.china.com

雅虎邮箱
接收服务器:pop.mail.yahoo.com
发送服务器:smtp.mail.yahoo.com

Gmail邮箱
接收服务器:pop.gmail.com
发送服务器:smtp.gmail.com

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 第二节 数据类型之数值型
Apr 28 PHP
PHP页面中文乱码分析
Oct 29 PHP
PHP eval函数使用介绍
Dec 08 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP crc32()函数讲解
Feb 14 PHP
PHP实现rar解压读取扩展包小结
Jun 03 PHP
基于swoole实现多人聊天室
Jun 14 #PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 #PHP
php实现微信公众平台发红包功能
Jun 14 #PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 #PHP
thinkPHP框架实现多表查询的方法
Jun 14 #PHP
php微信开发之关注事件
Jun 14 #PHP
thinkPHP框架动态配置用法实例分析
Jun 14 #PHP
You might like
js 利用className得到对象的实现代码
2011/11/15 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
员工工作表扬信范文
2014/01/13 职场文书
《故乡》教学反思
2014/04/10 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
人口与计划生育责任书
2015/05/09 职场文书
预备党员考察意见范文
2015/06/01 职场文书
歌咏比赛主持词
2015/06/29 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python