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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
PHP新手上路(二)
Oct 09 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
PHP使用mysqldump命令导出数据库
Apr 14 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 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中的output_buffering详细介绍
2014/09/27 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python内置加密模块用法解析
2019/11/25 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
python常量折叠基础知识点讲解
2021/02/28 Python
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
建筑自我鉴定
2013/10/19 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python