php通过smtp邮件验证登陆的方法


Posted in PHP onMay 11, 2016

本文实例讲述了php通过smtp邮件验证登陆的方法。分享给大家供大家参考,具体如下:

内网的系统为了统一账号,都采用用邮件账号登陆的方式,所以有了以下程序

/**
* 通过邮件 验证登陆
* 这里要明白的是用户名是 带域名的:aaa@163.com
*/
function valideEmailLogin($user, $pass, $smtp_server= 'smtp.163.com', $port=25)
{
$handle = fsockopen($smtp_server, $port);
if(!$handle)
return false;
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 220) { //链接服务器失败
fclose($handle);
return false;
}
fwrite($handle, 'HELO mystore'."\r\n"); //表明身份,这里的mystore是随便写的
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 250) { //服务器HELO失败
fclose($handle);
return false;
}
fwrite($handle, 'AUTH LOGIN'."\r\n");
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 334) { //请求验证登陆失败
fclose($handle);
return false;
}
fwrite($handle,base64_encode($user)."\r\n");
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
if($status[0] != 334) { //验证用户名失败
fclose($handle);
return false;
}
fputs($handle,base64_encode($pass)."\r\n"); 
$mes = fgets($handle);
//echo $mes;
if(!$mes){
fclose($handle);
return false;
}
$status = explode(" ",$mes);
fclose($handle);
if($status[0] != 235) { //验证密码失败
return false;
}else{
return true;
}
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
php中Swoole的热更新实现代码实例
Mar 04 PHP
Smarty变量用法详解
May 11 #PHP
基于PHP实现商品成交时发送短信功能
May 11 #PHP
Smarty环境配置与使用入门教程
May 11 #PHP
理解php依赖注入和控制反转
May 11 #PHP
php结合web uploader插件实现分片上传文件
May 10 #PHP
配置Nginx+PHP的正确思路与过程
May 10 #PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 #PHP
You might like
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
Angular工具方法学习
2016/12/26 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
教师应聘个人求职信
2013/12/10 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
酒桌上的开场白
2015/06/01 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android