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 相关文章推荐
新闻分类录入、显示系统
Oct 09 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php实现监听事件
Nov 06 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
10个简化PHP开发的工具
Dec 25 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 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正则校验用户名介绍
2008/07/19 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php实现的验证码文件类实例
2015/06/18 PHP
PHP递归创建多级目录
2015/11/05 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
JS 去除Array中的null值示例代码
2013/11/20 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
python获得图片base64编码示例
2014/01/16 Python
python中的五种异常处理机制介绍
2014/09/02 Python
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
17个Python小技巧分享
2015/01/23 Python
python调用API实现智能回复机器人
2018/04/10 Python
python调用百度语音识别api
2018/08/30 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
python 动态调用函数实例解析
2019/10/21 Python
Django框架安装方法图文详解
2019/11/04 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android