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 str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
phplot生成图片类用法详解
Jan 06 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP中的use关键字概述
2014/07/23 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
python3生成随机数实例
2014/10/20 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python实现扫雷游戏
2020/03/03 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
python3将变量输入的简单实例
2020/08/19 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
上海微创软件面试题
2012/06/14 面试题
奥利奥广告词
2014/03/20 职场文书
教师求职信范文
2014/05/24 职场文书
创先争优一句话承诺
2014/05/29 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书