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

字节探云者
• 阅读 2147

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

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

配置过程图:

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

如果以上文章对您有帮助,请给我们的开源项目点点star: github.crmeb.net/u/defu 不胜感激!

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
PHP实现Byte转换为KB、MB、GB、TB的方法
本文实例讲述了PHP实现字节数Byte转换为KB、MB、GB、TB的方法。分享给大家,具体如下:<?php运行结果如下图:!(https://oscimg.oschina.net/oscnet/82e10fe140d2962bc8ea3d3ce425117736a.png)本文分享自微信公众号PM吃瓜(wu\_lia
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Skywalking系列博客7
TIPS本文基于Skywalking6.6.0,理论支持Skywalking6.5.0及更高版本。从Skywalking6.5.0开始,部分Skywalking配置项支持“动态配置”——这样修改完配置后,就无需重启Skywalking啦。支持动态配置的配置项如下:配置Key描述值的格式receiver
Stella981 Stella981
3年前
Android SDK更新及安装
这篇文章主要介绍了Android在线更新SDK的方法,分别介绍了修改hosts文件使用谷歌官方镜像更新及使用国内镜像更新SDK的方法,非常简单实用,需要的朋友可以参考下本文讲述了Android使用国内镜像在线更新SDK的方法。分享给大家供大家参考,具体如下:什么是AndroidSDK:SDK:(softwaredevelopment
Stella981 Stella981
3年前
Git总结笔记1
1.环境搭建:Linux:安装gityuminstallygitWindows:到官网下载安装包安装完成后配置如下用户名和邮箱:gitconfigglobaluser.name"YourName"gitconfigglobaluser.email"email@exam
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
3年前
thinkphp5.0数据库操作
ThinkPHP数据库处理:1.MySQL的数据库连接首先配置database.php文件使用{dump(config('database));}来查看数据库的配置项使用{$resDb::connect();dump($res);}来查看数据库的连接信息我们可以在{Db::connect()}中来配置数据库的连接,具体
Stella981 Stella981
3年前
GoFramework框架简介(四)dubbo篇
框架中dubbo配置说明:Provider端配置如下:<dubbo:protocolname"dubbo"host"${dubbo.host}"port"${dubbo.port}"/<!服务提供者filter,在Provider上尽量多配置Consumer端属性,配置的覆盖规则:1)
Wesley13 Wesley13
3年前
5、pgpool
官网示例一、实现原理使用pgpoolII软件;我们常用来实现流复制的高可用性;备库只读的,不可写;就是当主库出现问题时;需要把备库自动激活为主库;来接管服务。这在其他高可用软件也有这功能,而pgpoolII在配置文件pgpool.conf中提供配置项failover\_command。让用户配置一个脚本,当发生故
Stella981 Stella981
3年前
39、chen框架
由于后台使用了chen框架,所以代码不能完全列出,可以到http://git.oschina.net/eternal\_rider/chen(http://git.oschina.net/eternal_rider/chen)下载项目,运行后,即可看到菜单效果级管理。示例框架中写了一个jquery菜单插件实现,可以使用存html代码样式
Wesley13 Wesley13
3年前
thinkPHP框架中执行原生SQL语句的方法
这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友可以参考下本文实例讲述了thinkPHP框架中执行原生SQL语句的方法。分享给大家供大家参考,具体如下:怎样在thinkphp里面执行原生的sql语句?