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 OPCode缓存 APC详细介绍
Oct 12 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP抽象类 介绍
Jun 13 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP编程风格规范分享
Jan 15 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
js获取form的方法
2015/05/06 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
关于Python的一些学习总结
2018/05/25 Python
Python中logging实例讲解
2019/01/17 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
信息管理专业推荐信
2013/10/29 职场文书
小学生新学期寄语
2014/01/19 职场文书
大学生创业策划书
2014/02/02 职场文书
个人自我评价范文
2014/02/05 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
排球赛新闻稿
2015/07/17 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL