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邮件发送,php发送邮件的类
Mar 24 PHP
php防止sql注入代码实例
Dec 18 PHP
php遍历数组的4种方法总结
Jul 05 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
yii2简单使用less代替css示例
Mar 10 PHP
自制PHP框架之模型与数据库
May 07 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
PHP程序员必须知道的两种日志实例分析
May 14 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php正则表达式(regar expression)
2011/09/10 PHP
解析link_mysql的php版
2013/06/30 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
python 简单的多线程链接实现代码
2016/08/28 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python实现函数极小值
2019/07/10 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
篮球赛新闻稿
2015/07/17 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
javaScript Array api梳理
2021/03/31 Javascript
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android