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.ini 中文版
Oct 28 PHP
PHP 源代码压缩小工具
Dec 22 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
php身份证号码检查类实例
Jun 18 PHP
php类常量用法实例分析
Jul 09 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
阿里旅行:飞猪
2017/01/05 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
感恩之星事迹材料
2014/05/03 职场文书
初中同学会活动方案
2014/08/22 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
MySQL的索引你了解吗
2022/03/13 MySQL