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来写记数器(详细介绍)
Oct 09 PHP
php mysql数据库操作类
Jun 04 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
PHP微信支付开发实例
Jun 22 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
php压缩文件夹最新版
2018/07/18 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
详解Python中的各种函数的使用
2015/05/24 Python
如何将python中的List转化成dictionary
2016/08/15 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
查看Django和flask版本的方法
2018/05/14 Python
浅析python中while循环和for循环
2019/11/19 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
软件工程师面试题
2012/06/25 面试题
建筑施工员岗位职责
2013/11/26 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
年度评优评先方案
2014/06/03 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
Python利用capstone实现反汇编
2022/04/06 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL