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关于array_multisort多维数组排序的使用说明
Jan 04 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
CI框架集成Smarty的方法分析
May 17 PHP
php日期操作技巧小结
Jun 25 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 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中spl_autoload详解
2014/10/17 PHP
php创建session的方法实例详解
2015/01/27 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
vant实现购物车功能
2020/06/29 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python实现Kmeans聚类算法
2020/06/10 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
介绍一下write命令
2014/08/10 面试题
新闻学毕业生自荐信
2013/11/15 职场文书
超市中秋节促销方案
2014/03/21 职场文书
医学求职信
2014/05/28 职场文书
课程设计的心得体会
2014/09/03 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
党员转正党支部意见
2015/06/02 职场文书
校园安全教育心得体会
2016/01/15 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
python中的plt.cm.Paired用法说明
2021/05/31 Python
Node实现搜索框进行模糊查询
2021/06/28 Javascript
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python