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 程序员也要学会使用“异常”
Jun 16 PHP
PHP 日期加减的类,很不错
Oct 10 PHP
php5.3 废弃函数小结
May 16 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php递归删除目录与文件的方法
Jan 30 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php数据库操作model类(使用__call方法)
Nov 16 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 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
php基础教程 php内置函数实例教程
2012/08/21 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python dumps和loads区别详解
2020/02/04 Python
python绘制趋势图的示例
2020/09/17 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
房屋出租协议书
2014/04/10 职场文书
房地产广告策划方案
2014/05/15 职场文书
检讨书模板
2015/01/29 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
工作态度怎么写
2015/06/25 职场文书
党校培训学习心得体会
2016/01/06 职场文书
决心书格式及范文
2019/06/24 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis